问题标签 [cmakelists-options]

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 投票
0 回答
23 浏览

cmake - cmake 中的 .phony 目标替代项以创建自定义目标

假设 Makefile 有一个像这样的虚假目标

我们可以通过给出以下命令从命令行直接运行 Makefile 中的这个 .phony 目标

我想用 CMakeList 做同样的事情。如何告诉 cmake 用我给的名字创建一个虚假目标?

注意:我不想每次运行 make 时都运行这个虚假目标。相反,我想在需要时手动运行它。我知道 add_custom_target() 将生成虚假目标,并且在 add_dependency() 的帮助下,我们可以将虚假目标附加到目标。但是我的要求不一样。我想在需要时手动运行这个虚假目标。

0 投票
2 回答
630 浏览

shell - 如何从 shell 脚本调用 cmake 方法?

我有一个参数化函数,mytestprogram.cmake如下所示:

问题:
如何get_output_from_input从 shell 脚本调用 cmake 方法?

我了解到有一个-P <source.cmake>标志,它将 CMake 置于脚本处理模式,我们可以使用它执行任意 CMake 代码,如下所示。

get_output_from_input所以,在这种情况下,我相信从 shell 脚本调用的方式如下所示?

但上述技巧不起作用。我的跑步方式execute_process正确吗?

试图找出问题所在,似乎echo $CMAKE_PROGRAM返回空?这可能是原因吗?我在这里想念什么get_output_from_input

环境:
cmake 版本 3.18.2
macOS Catalina

0 投票
1 回答
192 浏览

qt - 在 Qt 中使用 CMake 的主项目之前如何构建依赖库?

我已经查看了类似的问题,但没有找到适合这个基本场景的问题。我对 CMake 比较陌生。我有一个基于 CMake 的 Qt 5 项目。这是一个简单的测试应用程序;在其构建期间,我想构建并静态链接开源 Paho MQTT C lib 和 C++ 包装器。这是两个独立的项目,有自己的 CMakeLists.txt 文件。

根据 Qt 的默认设置,它构建到源代码树之外的目录中。

我已经在我的项目的父目录下复制了这些开源库的源代码树,并将顶级 CMakeLists.txt 文件编辑为 add_subdirectory 它们。

我还添加了 target_link_libraries。我可以自己获取 C lib 来构建并链接到父项目,但是如果我添加 C++ 包装器,C++ 包装器的处理会抱怨它找不到 C lib...这是真的,因为它没有还没有建成。简单地使用 Qt 的“构建所有项目”菜单项解决了对 C 库的类似投诉,但是当添加 C++ 包装器库时,这不起作用。包装器的 CMakeLists.txt 文件问题如下:

paho.mqtt.cpp/src/CMakeLists.txt:150 处的 CMake 错误(消息):找不到 Paho MQTT C 库

果然它不存在,因为当这个预处理完成时它还没有被构建。

更新:这是我的顶级 CMakeLists.txt 文件,根据 Corristo 的建议进行了修改,它成功地让 CMake 解析了整个层次结构。该项目现在构建。不过,我很困惑这里的最后两行会导致一个空字符串。对链接目录的类似尝试也是如此。

在此处输入图像描述

0 投票
2 回答
9422 浏览

python - ModuleNotFoundError:没有名为“rospkg”的模块

我是 ROS 新手,

当我将 rospy 导入脚本文件 example.py 并运行它时遇到问题:它说:

我将以下内容导入到我的脚本文件中:第 4 行是 rospy

这是我的 CmakeLists:

这是我的包 xml:

我在 CMakelists 和 Package XML 'rospy' 中都指定并导入它。我还检查了我的 ros 是否有可用的 rospy 包。但是,我不明白为什么我无法运行我的脚本文件?

我很乐意提供有关此错误的更多详细信息。任何人都可以让我知道这个问题的解决方案吗?

0 投票
1 回答
35 浏览

cmake - 如何覆盖/附加 CMAKE_C_CFLAG

cmake 版本:3.18.5 MinGW Makefiles 主机:windows 目标:ppc 编译器:windriver

我想创建两个具有不同标志的不同可执行文件。例如,我想创建一个带有标志(-tPPCE)的可执行文件和另一个带有标志(-tPPCEV)的可执行文件,这些标志定义了硬件的类型。如果我尝试在他们各自的 CMakelists.txt 中设置这个值

它不工作。

仅当我在设置了所有其他标志的工具链文件中设置此值时,它才有效。

0 投票
0 回答
45 浏览

makefile - 使用单个 CMakelist 中的许多源文件编译(通过 CMakelist)main.cpp

我正在尝试编译如下所示的项目。

我想用所有 *.cpp 和 *.h 编译项目。所以我通过参考下面网址的最后一条评论制作了 CMakeLists.txt。 带有包含和源路径的 CMake - 基本设置

但错误显示“没有给目标提供资源”。我认为 add_executable() 需要 main.cpp 但如果我这样做,则无法告诉 CMakelist 其他来源(.cpp 和 .h 文件)的位置。我能得到一些建议吗?

0 投票
2 回答
261 浏览

cmake - 我可以控制 CMake 中 target_sources 的源排除吗?

我是 CMake 的新手,我想知道是否有可能target_sources()根据变量排除某些来源。

假设我在下面有这个

我想根据名为 ie 的标志从 myDir3 中排除/包含源/目录myFlag。我怎样才能做到这一点?

0 投票
0 回答
17 浏览

visual-studio - 如何在不同的位置在 VS 中使用构建基于 cmakelitsts 的项目?

我用这个 cmakelists.txt 使用 CMake 构建创建了一个 VS 项目

文件夹结构

cmakelists.txt

我可以在 VS 2017 中构建使用上述 cmakelists.txt 创建的 VS 解决方案

但是当我在构建 sln 项目时更改硬盘中 file_build 的位置时,它会在系统中查找绝对路径。在初始 cmakelists 构建期间设置的

如何使它使用相对路径。如何在 cmakelists.txt 中设置它以使用相关路径?

因为 file_build 文件必须在不同的 PC 中使用/打开和开发和构建。我需要避免在创建的 Visual Studio 解决方案中使用绝对路径

0 投票
0 回答
44 浏览

cmake - 使用正确的包含目录来构建 LLVM 通行证

因此,我的机器上有两份 LLVM,一份通过 apt 安装,一份使用 git repo 的调试支持构建。我正在尝试在源代码树之外构建一个传递,如此此处所述,并使用 opt 的调试版本运行它。然而,尽管按照这些说明编写了我的 CMakeLists,我可以看到编译器仍在使用非调试版本(通过 apt 安装的那个)的头文件;这是一个问题,因为非调试版本没有启用 ABI 中断检查(请参见此处),而调试版本则启用,因此 debug-build opt 拒绝加载我的通行证。

我可以看出编译器使用了错误的标头,因为我尝试在自己的代码中手动定义 LLVM_ENABLE_ABI_BREAKING_CHECKS,并从编译器收到以下警告:

如您所见,它使用 /usr/include 下的路径作为 LLVM 标头,而不是来自 Git 树的路径。尽管我重新定义了宏,但它仍然没有使用正确的配置构建我的通行证(编译的库中存在错误的符号)。如何将编译器指向正确的标头(最好使用 CMake)?

请注意,这不是由 RTTI 冲突引起的,当使用 opt 运行传递时,可能会导致类似的未定义符号错误。我正在使用 -fno-rtti 构建我的通行证。

0 投票
0 回答
123 浏览

android-studio - 如何在 Android Studio 中构建 LAPACK

目前,我有一个 Android 项目,我在其中使用 JNI(Java 本机接口)来调用 LAPACK C 函数。

我的 JNI 是:

本机-lib.c

CMakeLists.txt:

问题是当我尝试调用 lapack 目录中存在的函数 print_matrix_colmajor() 时,它给了我们未定义的参考问题。我想使我的 CMakeList 能够从我的 JNI 调用任何 lapack 函数。有人可以帮助我使用 CMakeLists.txt 文件构建 lapack 模块。