2016-01-13 4 views
1

Je tente de construire une bibliothèque statique avec la chaîne d'outils IAR en utilisant cmake. Je ne construis que des fichiers d'assemblage dans cette bibliothèque (ce que je pense être un détail important ici), et ils se construisent bien. Quand il arrive à l'étape d'archivage, cependant, je peux voir qu'il invoque l'archiveur avec des arguments de style "GNU".cmake redéfinit la commande d'archive lors de la construction de la bibliothèque source de l'assemblage avec la chaîne d'outils IAR

"C:/Program Files (x86)/IAR Systems/Embedded Workbench 6.5/arm/bin/iarchive.exe" cr libasm.a "somefile.s.obj" "someotherfile.s.obj" 

au lieu de « cr », il doit être « --create »

Comment CMake déterminer la composition de cette commande et comment puis-je préciser ce qu'il doit être pour mon toolchain?

Mon script abrégé cmake pour cette bibliothèque ressemble à ce

enable_language(ASM) 
add_library(asm ${ASM_SOURCES}) 
target_compile_options(asm PUBLIC ${ASM_COMPILE_FLAGS}) 
target_include_directories(asm PUBLIC ${INCLUDE_DIRS}) 

Je suis en mesure de construire des archives C/C++ dans le même script sans problème. J'ai essayé de régler manuellement le CMAKE_AR dans quelques endroits différents et cela ne fonctionne pas. Encore une fois, je construis SEULEMENT fichiers d'assemblage dans cette archive, donc je ne suis pas sûr si c'est pourquoi il n'utilise pas ces commandes d'archivage. J'ai essayé d'exécuter ceci sur cmake versions 3.4.0 et 3.4.1.

+0

Quelle version de CMake? J'ai essayé le plus récent? – usr1234567

+0

Copie possible de [Comment définir les options pour CMAKE \ _AR] (http://stackoverflow.com/questions/5659225/how-to-set-the-options-for-cmake-ar) – Tsyvarev

Répondre

0

J'ai trouvé que le réglage CMAKE_ASM_CREATE_STATIC_LIBRARY a remplacé la commande invoquée.

set(CMAKE_ASM_CREATE_STATIC_LIBRARY "<CMAKE_AR> <TARGET> --create <LINK_FLAGS> <OBJECTS> ") 

J'ai choisi la composition de la commande en fonction de la commande archive CXX trouvé in IAR-CXX.cmake

set(CMAKE_CXX_CREATE_STATIC_LIBRARY "<CMAKE_AR> <TARGET> --create <LINK_FLAGS> <OBJECTS> ")