问题标签 [cmake-modules]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2169 浏览

android - 无法从 cmake.dir 获取版本

当我构建 syc 我的 android 项目时,它是这样的 在此处输入图像描述

在此处输入图像描述

本地属性

在此处输入图像描述

我该如何解决这个错误?

0 投票
2 回答
337 浏览

cmake - CMake:将 add_subproject 与使用 Include 的库一起使用会导致错误的相对路径

全局 CMakeLists.txt

这个 CMakeLists.txt 使用 MOC 编译了一些 C++ 文件(Qt5/...),并且在任何方面都不是“特殊”的。

有问题的代码是这样的:

libwebrtc CMakeLists.txt

完整的 libwebrtc 源 -> https://github.com/cloudwebrtc/libwebrtc-build/blob/dev/CMakeLists.txt

'cmake ..' 上的错误

如果我运行,mkdir build; cd build; cmake ..我可以看到 CMakeinclude()在顶级项目中搜索,而不是在它的子目录中,正如我所期望的那样。

问题(原创)

除了通过从 CMakeModules 目录复制包含将库集成到我的基础项目中之外,我还能做些什么?

谢谢,下面已经回答了,仍然留在这里。

关于依赖的问题

add_subdirectory 调用正确构建了 libwebrtc,但我的 include_directories 调用,来自顶层 CMakeLists.txt(不是 libwebrtc 库)的调用,想要包含仅在完整构建后可用的文件:

如何使 cmake 依赖于库的完整构建然后构建主程序?通常使用add_custom_command(..)但由于我们使用的是add_subdirectory(..)我们不能也使用add_custom_command(..)

我对这个问题的破解是将库重命名为 libwebrtc/CMakeLists.txt 内的 project(libwebrtcx) 以及 ExternalProject_Add(libwebrtcx ...) 并添加add_dependencies(${PROJECT_NAME} libwebrtcx)但可以在没有该hack的情况下完成?

0 投票
1 回答
1233 浏览

cmake - 无法使用 host=x86 或 -A Win32 为 Visual Studio 2019 生成 32 位配置

我正在尝试将 cmake 配置为分别构建 32 位和 64 位...

到目前为止 64 位很容易,因为我只需要添加 -A x64

但我无法设置 32 位拱门。官方文档建议 -A Win32 或 -T host=x86
https://cmake.org/cmake/help/latest/generator/Visual%20Studio%2016%202019.html
即使使用它们我也无法设置 x86 主机

我试过的:

没有任何效果,这是我一直在获取的日志...

0 投票
1 回答
5062 浏览

linux - 在linux中使用cmake获取“找不到cmake模块文件:CMakeDetermineVersionCompiler.cmake”

在通过网站上的脚本安装 cmake 后,我收到无法找到 cmake 模块文件:CMakeDetermineVersionCompiler.cmake 。我缺少什么以及在哪里/运行什么命令来解决这个问题。

安装命令:

CMakeLists.txt:

版本:cmake 版本 3.16.6(我也尝试了最新版本 3.17.2)

操作系统:Linux Mint 19 肉桂

0 投票
1 回答
152 浏览

c++ - 使用 CMake 包含库时的路径不匹配

我正在尝试将两个库包含到我的项目中以使用它们。我将 CMake 与 CLion 一起使用。

这两个库是:https ://github.com/herumi/bls和https://github.com/herumi/mcl

我得到了以下项目设置:

在此处输入图像描述

这是主要的 CMake 文件:

Findbls.cmake: _

Findmcl.cmake: _

此设置允许我很好地将库的文件包含在我的项目中:

在此处输入图像描述

但是,问题出现了,因为如您所见,我可以直接在我的主文件(bn.h 和 bls.h)中链接库文件,而不需要它们的前缀(bls/bls.h 或 mcl/bn.h)。

因此,当尝试构建它时,我得到:

因为库本身需要前缀“mcl/bn.h”路径。

在此处输入图像描述

因此,问题是我如何将这两个库(mcl 和 bls)包含在我的项目中,并在路径中添加前缀,这样这也与这两个库兼容。

0 投票
0 回答
69 浏览

c - UBUNTU:找不到包 glpk4.65(.pc 文件)

我正在使用 GLPK 求解器进行项目。但是,我在尝试编译它时遇到了问题。

我正在使用它在我的计算机中查找包:

我总是收到错误:当我在终端中键入 cmake .. 时找不到包“glpk4.65”。

我认为问题就在这里。我的电脑里应该有一些glpk4.65相关的.pc文件,但是我搜过了,没有。例如,当我这样做以查找 gtk+-3.0 时,cmake 会找到该包。文件 gtk+-3.0.pc 可以在我的电脑的 /lib/x86_64-linux-gnu/pkgconfig/ 中找到。但是,在那里找不到与 glpk .pc 相关的文件。有任何想法吗?

谢谢你。

0 投票
0 回答
300 浏览

cmake - Ninja 无法识别 CMake 生成器表达式

我试图使用 CMake 生成器表达式,例如:

当使用的生成器是 Visual Studio 或 Unix Makefiles 时,此表达式可以正常工作,但当使用的生成器是 Ninja 时会失败,并出现以下错误:

Ninja 不支持生成器表达式吗?

如果不是,我最好的选择是什么?

如果是这样,问题究竟是什么?

0 投票
0 回答
279 浏览

qt - 通过shell脚本运行的cmake给出错误找不到包配置文件

试图交叉编译 QT 应用程序。在SDK和导出环境中继承qt5的东西后,我可以通过在终端上手动调用cmake和命令成功构建应用程序。make但是我无法通过运行下面提供的脚本来构建相同的应用程序:

src/example-App$./app-qt5-build.sh

它抛出错误:

应用程序-qt5-build.sh

这个脚本出了什么问题?你能给我一些提示吗?

手动cmake命令构建成功。

0 投票
1 回答
915 浏览

c++ - 使外部项目可用于 find_package CMake

在我的项目中,我有一个依赖项“A”,它有另一个库依赖项“B”,我试图在 A 之前下载并安装依赖项 B 以清除冲突。我正在使用Externalproject_add,FetchContent_Declareinstall,但它失败了。

举个例子

我有一个 CMakeList.txt 像:

这个 libpng 的 CMakeList.txt 有一行find_package(ZLIB REQUIRED),此时我可以手动下载并安装 zlib,但由于我正在开发一个库,我希望我的代码能够处理这种依赖关系。我也无法修改 libpng 的 CMakeList.txt。所以,我有这个代码,但它继续失败。

我仍然从 CMake 开始,并且我不断学习,但很难找到合适的例子。

那么,如何安装外部项目以使其可用于 find_package?

0 投票
1 回答
304 浏览

cmake - 在 CMake 中找不到 libgit2

我正在迈出第一步CMake,我有一个 Hello World 示例,我想在其中使用libgit2。我的目录结构如下:

我想静态或动态地链接它,至少它在开始时有效。但是当我执行 CMake 时,我收到下面的错误消息。谁能帮我解决这个问题?

Findlibgit2.cmake

CMakeLists.txt