Issue
I'm using CMake with the Ninja generator to generate QNX libraries, and it's creating a rules.ninja
with rules that look like this:
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
and I'd like to add the D
flag to the ar
modifiers so that I can get deterministic builds.
like this:
...-qnx7.0.0-ar qcD $TARGET_FILE ...
Anyone know which CMake variable I need to modify?
Solution
Okay, I managed to figure it out. The variables to use are CMAKE_"LANG"_ARCHIVE_CREATE
and CMAKE_"LANG"_ARCHIVE_APPEND
Like so:
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>")
Answered By - DrRobotNinja