如何使用带有 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_CREATECMAKE_"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>")