如何使用带有 Ninja 生成器的 CMake 将修饰符标志传递给存档文件 (ar)
How do I pass modifier flags to archive-file (ar) using CMake with a Ninja generator
我将 CMake 与 Ninja 生成器结合使用来生成 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 变量吗?
好的,我设法弄明白了。要使用的变量是 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>")
我将 CMake 与 Ninja 生成器结合使用来生成 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 变量吗?
好的,我设法弄明白了。要使用的变量是 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>")