我正在尝试使用cmake使用IAR工具链构建静态库。我只在这个库中构建汇编文件(我认为这是一个重要的细节),它们构建得很好。但是,当它进入归档步骤时,我可以看到它使用“GNU”样式参数调用归档器。
"C:/Program Files (x86)/IAR Systems/Embedded Workbench 6.5/arm/bin/iarchive.exe" cr libasm.a "somefile.s.obj" "someotherfile.s.obj"
而不是'cr',它必须是'--create'
cmake如何确定此命令的组成以及如何指定我的工具链需要它?
这个库的删节cmake脚本看起来像这样
enable_language(ASM)
add_library(asm ${ASM_SOURCES})
target_compile_options(asm PUBLIC ${ASM_COMPILE_FLAGS})
target_include_directories(asm PUBLIC ${INCLUDE_DIRS})
我能够在同一个脚本中构建一些C / C ++存档而没有任何问题。我尝试在几个不同的位置手动设置CMAKE_AR,但它不起作用。我再次在这个档案中构建 ONLY 汇编文件,所以我不确定这是不是因为它没有使用这些档案命令。
SET(CMAKE_CXX_ARCHIVE_CREATE "<CMAKE_AR> --create -o <TARGET> <LINK_FLAGS> <OBJECTS>")
SET(CMAKE_C_ARCHIVE_CREATE "<CMAKE_AR> --create -o <TARGET> <LINK_FLAGS> <OBJECTS>"
我已经尝试在cmake版本3.4.0和3.4.1上运行它。
答案 0 :(得分:1)
我发现设置CMAKE_ASM_CREATE_STATIC_LIBRARY
取代了被调用的命令。
set(CMAKE_ASM_CREATE_STATIC_LIBRARY "<CMAKE_AR> <TARGET> --create <LINK_FLAGS> <OBJECTS> ")
我根据找到的in IAR-CXX.cmake
的CXX存档命令选择了命令的构成set(CMAKE_CXX_CREATE_STATIC_LIBRARY "<CMAKE_AR> <TARGET> --create <LINK_FLAGS> <OBJECTS> ")