如何使用带有 Ninja 生成器的 CMake 将修饰符标志传递给存档文件(ar)
Posted
技术标签:
【中文标题】如何使用带有 Ninja 生成器的 CMake 将修饰符标志传递给存档文件(ar)【英文标题】:How do I pass modifier flags to archive-file (ar) using CMake with a Ninja generator 【发布时间】:2021-04-14 14:31:44 【问题描述】:我正在使用带有 Ninja 生成器的 CMake 来生成 QNX 库,它正在创建一个 rules.ninja
,其规则如下所示:
rule CXX_STATIC_LIBRARY_LINKER__<target>
command = $PRE_LINK && <path>/cmake -E rm -f $TARGET_FILE && <qnx-path>/aarch64-unknown-nto-qnx7.0.0-ar qc $TARGET_FILE $LINK_FLAGS $in && <path>/aarch64-unknown-nto-qnx7.0.0-ranlib $TARGET_FILE && $POST_BUILD
description = Linking CXX static library $TARGET_FILE
restat = $RESTAT
并且我想将 D
标志添加到 ar
修饰符,以便获得确定性构建。
像这样:
...-qnx7.0.0-ar qcD $TARGET_FILE ...
有人知道我需要修改哪个 CMake 变量吗?
【问题讨论】:
【参考方案1】:好的,我设法弄明白了。要使用的变量是CMAKE_"LANG"_ARCHIVE_CREATE
和CMAKE_"LANG"_ARCHIVE_APPEND
像这样:
set(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> qcD <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_CXX_ARCHIVE_APPEND "<CMAKE_AR> qD <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> qcD <TARGET> <LINK_FLAGS> <OBJECTS>")
set(CMAKE_C_ARCHIVE_APPEND "<CMAKE_AR> qD <TARGET> <LINK_FLAGS> <OBJECTS>")
【讨论】:
以上是关于如何使用带有 Ninja 生成器的 CMake 将修饰符标志传递给存档文件(ar)的主要内容,如果未能解决你的问题,请参考以下文章
CMake / Ninja:当内容未知时递归“清理”输出目录......?
CMake、Ninja 和 Visual Studio 2019 重建一切
C++学习(四四二)cmake ninja build.ninja rules.ninja