问题标签 [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.
cmake - 在 cmake 中只安装一个目标
我总共有 5 个目标。其中之一是静态库。其他 4 个是可执行文件。我不希望每次都建立图书馆。所以我只想编译这个库,把它保存在一个特定的位置,以便其他可执行文件可以引用这个库。我知道我们可以通过使用install
命令来做到这一点。
但是如果我使用install
命令,它正在编译所有目标。如何只编译一个目标并将其安装到一个位置?
windows - 如何告诉我的 CMake 脚本将 .lib 文件放在 output/lib 中
目前,当我使用 CMake 构建我的 windows 项目(动态库)时,我的.dll
文件进入./output/bin
,我的.h
文件进入./output/include
,但我的.lib
文件只进入./lib
.
我可以做些什么来让我的.lib
文件转到./output/lib
吗?我没有做 CMake 脚本,它很大,所以我不太确定去哪里看。这里有一些我认为可能会有所帮助的片段。
任何建议表示赞赏。
cmake - cmake find_library()找不到PATHS指定的库
我有一个find_library()
与下面匹配的声明(这是基于amazon kinesis 项目):
find_library(SRTP_LIBRARIES NAMES srtp2 REQUIRED PATHS ${OPEN_SRC_INSTALL_LIB_PREFIX})
正确指向该OPEN_SRC_INSTALL_LIB_PREFIX
库所在的位置。我可以直接观察到这一点。但是,这个find_library()
电话失败了,我很困惑为什么会这样做。
我认为也许 cmake 是先搜索其他路径并忽略我指定的路径,所以我也用标志尝试了它,因为这NO_DEFAULT_PATH
应该将搜索限制在指定的路径中:
find_library(SRTP_LIBRARIES NAMES srtp2 REQUIRED PATHS ${OPEN_SRC_INSTALL_LIB_PREFIX} NO_DEFAULT_PATH)
......仍然没有运气。
任何想法为什么这不起作用?我已经通过prints验证了OPEN_SRC_INSTALL_LIB_PREFIX
它是库的有效目录。message()
请注意,这是交叉编译,尽管我不明白为什么这会改变行为,find_library()
除非我从文档中遗漏了一些东西
cmake - cmake 中每个目标的单独日志文件
如何为 cmake 中的每个可执行目标创建单独的日志文件?例如,如果我有三个名为 A、B 和 C 的可执行目标。我想要三个日志文件 A.log、B.log 和 C.log
cmake - CMake:set_target_properties 失败,目标由生成器表达式定义
我在使用 cmake 生成器表达式TARGET_NAME_IF_EXISTS时遇到问题。有了这个CMakeLists.txt
:
我明白了
我希望set_target_properties
根据是否SLIB_BUILD_STATIC
设置减少到其中之一:
我究竟做错了什么?
cmake - cmake中接口库数量的最大限制
有谁知道我们可以链接到cmake中的可执行目标的接口库的数量是否有最大限制
cmake - cmake中的打印接口库
如何在cmake中打印接口库。实际上我想这样做是出于调试目的。所以想知道如何打印该接口库中的所有包含目录
我有一个接口库 A,它链接到 2 个接口库 B 和 C(即 A 包括 B 和 C)。现在我想知道 A 是否包含所有路径不是..如何检查?
cmake - Ninja Make 系统不接受 GENERATED 命令
我有一组应由特殊编译器编译的汇编文件。在此之后,它应该被添加到由我设置的编译器创建的库中CMAKE_C_COMPILER
。它在 Mingw Makefile 系统上运行良好,但不适用于 Ninja Make。
以下是 cmakelists.txt 中的代码
file1.o 和 file2.o 由不同的汇编程序生成。我也为这些文件设置了属性。
问题1:
自定义目标special_asm
不直接生成目标文件。它正在生成一个批处理脚本。这就是为什么我创建了另外一个自定义目标special_asm_cmd
来运行批处理脚本,该脚本将生成目标文件。Mingw make 系统直接从中生成目标文件,special_asm
但 Ninja 并没有那样做。
问题 2
我已经GENERATED true
为特殊生成的目标文件设置了属性。但是忍者给出了以下错误。但是Mingw Make能够解决依赖并且没有错误
cmake - CMake add_custom_command() POST_BUILD 生成器表达式扩展不起作用
我想在构建之后运行 POST_BUILD 操作(但仅在调试配置中)。
在阅读了 add_custom_command 文档和一个可能的解决方案后,我了解到我可以将我的 COMMAND “包装”到$<CONFIG:Debug>
生成器表达式中(以确保它在发布模式下是“空的”)。
我尝试了以下方法:
但这给了我 CMake 配置时警告和构建时的硬故障(使用 Ninja 生成器):
我尝试了许多可能的引号组合(包括转义引号):
COMMAND $<$<CONFIG:Debug>:"${CMAKE_COMMAND} -E echo \"hi there from debug build\"">
等等
COMMAND "$<$<CONFIG:Debug>:${CMAKE_COMMAND} -E echo \"hi there from debug build\">"
。
但是即使它删除了配置时警告,它仍然会在构建时产生硬错误。
问题:实现我想要的正确方法是什么?有可能是这样还是这里有 CMake 限制?
(注意:如果可能的话,我想让整个命令在一个地方执行。我也知道其他可能的解决方法)
windows - CMake list(APPEND ...)将正斜杠切换为反斜杠
我在使用 CMake list(APPEND ...)时遇到了一个非常奇怪的问题。我的脚本如下(只是一个例子):
生成产生以下输出:
我预计两个自定义目标都将运行相同的命令。但是, build.ninja 文件以不同的方式处理每个自定义目标:
有谁知道如何防止 list(APPEND ...) 从“翻转”斜杠(“/”)到反斜杠(“\”)?更奇怪的是 cmake_print_variables(...) 输出不受影响。
提前致谢。-乌里