问题标签 [cmake-language]

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 回答
63 浏览

cmake - 自定义目标的属性

add_cusmtom_target用来进行自定义构建,但是这个目标有什么属性?尤其是如何获取目标中列出的依赖项列表:

D找不到,如何获取自定义目标的属性?

0 投票
1 回答
59 浏览

cmake - CMake 的动态源列表

我尝试配置我的 CMake 项目,以便它可以接受动态源列表。但由于某种原因,我从文件函数中得到了空列表。所以我尝试以两种方式执行相同的操作:

[1] 静态列表(不需要的方式)

在这里我得到了我需要的文件列表。

[2] 动态列表(即我想做的)

尽管message(${Sources})打印出相同的字符串,但由于某种原因,我在这里得到了空列表${VARIANT_A}

那么我做错了什么?

0 投票
1 回答
50 浏览

cmake - 在 CMake (cmake-gui) 中使用 ComboBoxes 约束值

我遇到了 CMake 项目,其中 cmake-gui 中的缓存条目显示为组合框。但是我找不到这个项目。如何使用组合框约束的值将缓存条目添加到 CMakeLists.txt?

0 投票
1 回答
671 浏览

cmake - cmake 使用通配符作为 find_library NAMES 选项

在 cmake 中找到我们使用的库find_library(MyLibrary_LIBRARY NAMES mylibrary mylibrary10 mylibrary11 HINTS /path/to/library)mylibrary.so该命令mylibrary10.so告诉cmakemylibrary11.so.lib每个HINTS. 如果找到上述任何文件,则文件的路径将写入MyLibrary_LIBRARY变量。但是,由于我正在使用的库之一经常被更新——因此该库很快就会被重命名为mylibrary20.somylibrary21.so——我需要经常更新 cmake 脚本以反映更改。我想知道是否有一种方法可以在这里使用通配符,以便 cmake 会自动在mylibraryXX.so这里找到,这XX意味着两位数。

根据文档(https://cmake.org/cmake/help/latest/command/find_library.html),这似乎不受支持。如果是这种情况,是否还有其他解决方法?(创建从mylibraryXX.soto的链接mylibrary.so对我来说不太有效,因为我无法控制库。)

0 投票
0 回答
47 浏览

c++ - GLOB_RECURSE 抓取错误的源文件

我的源项目目录是这样的,

我需要用源 a.cpp 和 b.cpp 制作一个可执行文件,

我希望这会将 a.cpp 和 b.cpp 作为唯一的源文件,但是当我打印时

它也拾取了 test.cpp,我不知道为什么会这样。我的理解是 ${CMAKE_CURRENT_SOURCE_DIR}/src/*/ *.cpp,在这个语句中由于通配符 * 它会遍历 src 文件夹的每个子目录,然后使用 *.cpp 它会在每个子目录中附加所有 cpp 文件这些子目录。

0 投票
0 回答
69 浏览

cmake - 即使 BUILD_SHARED_LIBS 设置为 ON,如何强制 cmake 静态链接特定库

即使我希望其他库动态链接,如何强制库静态链接。我想动态链接我的大部分库,但我的一个库需要静态链接。有没有一种方法可以强制到该库的任何链接都是静态的,同时允许其他库动态链接?

请注意,以上是伪代码,因此修复代码中的“错误”不会解决我的问题。我只想知道是否有办法强制库始终静态链接,即使 CMake 中的其他库正在动态链接。

0 投票
1 回答
545 浏览

c++ - 如何在cmake中的项目之间添加_dependencies

我有一个如上所述的 CMakeLists.txt。正在尝试构建项目 abc。但要构建它,我还需要“a_certain_source_file.cpp”,它是来自另一个名为 xyz 的项目的自动生成的源文件。如果 xyz 是从同一个 CMakeLists.txt 构建的,那么 add_dependencies 工作不会有问题。我无法通过我现在拥有 CMakeLists.txt 的方式解决对“a_certain_source_file.cpp”的依赖。任何可以提供帮助的 CMake 爱好者或专家?

我在这里也看到了一个密切的匹配 - cmake: add_dependencies 不适用于外部项目,但我不需要下载任何东西。所以不确定这是否是我需要的。

0 投票
1 回答
55 浏览

c - 如何创建需要外部头文件的 cmake 库

我觉得我错过了这个的一些关键想法。

我有一个库,我想为其创建一个 CMakeLists.txt 文件。我想将它与不同的应用程序链接起来。

该库需要conf.h定义一个文件。应用程序必须提供这一点。图书馆期待它。这种关系叫什么?

我目前的解决方案CMakeLists.txt是有一个变量,如:

然后让应用程序定义 CONF_DIR。这很不酷,因为我不能有多个应用程序链接它。

唯一的另一种选择是将整个源库的副本保留在应用程序文件夹中,这也很不酷。

我希望最大限度地提高可重用性。我该如何处理?

旁注:对于任何熟悉的人,有问题的库是 STM32Cube 的 HAL 库,讨厌的文件是stm32h7xx_hal_conf.h.

在此处输入图像描述

0 投票
1 回答
127 浏览

c++ - 为什么从并行文件夹CMake中找不到文件

为了让我的 .cpp 和 .h 文件稍微整理一下,等待他们的职责,我决定将它们放入单独的文件夹中,我使用了以下结构:


|
-CMakeLists.txt [rootCmakeList]
src
|
-main.cpp
.......|
....... 数学
.......|
.......-CMakeLists.txt[mathCmakeList]
.......-Algebra.h
.......-Algebra.cpp
....... XML [xmlCmakeList]
... ....|
.......-CMakeLists.txt
.......-AwesomeXML.h
.......-AwesomeXML.cpp

[rootCmakeList] 看起来:

[mathCmakeList] 看起来:

[xmlCmakeList] 看起来:

到目前为止一切顺利,没有任何问题。但是如果我想#include Algebra.h 到 AweseomeXML.cpp 我找不到文件。

老实说,我什至不确定 cmake 命令add_librarytarget_link_libraries在这里是否真的有意义,因为我不想创建自己的库,只是想整理一下我的文件,等待他们的主题。

0 投票
0 回答
28 浏览

c - 如何在cmake中根据条件包含目录

我正在使用windriver编译。我按照以下步骤