使用IAR工具链

时间:2016-01-13 01:51:22

标签: cmake iar

我正在尝试使用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上运行它。

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> ")