CMake et édition des liens en cross-compilation

CMake et édition des liens en cross-compilation - Divers - Programmation

Marsh Posté le 26-01-2023 à 00:37:49    

Bonjour zatouss
 
J'ai une question pour ceux qui connaissent bien CMake :
Je l'utilise en compilation croisé avec le compilateur proprio ARMCC. Je suis en ce moment en train de faire le fichier toolchain pour un projet un peu bac-à-sable et c'est de la compilation croisée car la plate-forme cible est une console de jeu à puce ARM. La compilation se passe bien. Par contre, au moment de l'édition des liens, ça passe pas car les libs obligatoires que je mets en entrée avec link_libraries() se retrouvent toutes avec le suffixe "-l" quand cmake appelle le linker (qui est armlink... c'est différent de ce qui est utilisé pour compiler). Or la ligne de commande du linker armlink doit prendre les libs sans le "-l". Je mets les libs comme ça, y a pas de préfixes à mettre en argument. Le "-l" c'est un comportement de compilo type gcc ou msvc mais ça colle pas avec armcc. Je voudrais juste qu'il arrête de foutre ce préfixe mais en lisant la doc dans tous les sens ou en cherchant sur internet des problèmes similaires pendant des heures je trouve rien sur le paramétrage de cette option dans CMake. :/
 
Quelqu'un sait comment je pourrais m'en sortir pour ce problème ?  :??:


---------------
( ͡° ͜ʖ ͡°) ( ͡⊙ ͜ʖ ͡⊙) ( ͡◉ ͜ʖ ͡◉)
Reply

Marsh Posté le 26-01-2023 à 00:37:49   

Reply

Marsh Posté le 29-01-2023 à 14:08:18    

Bon je me répond au cas où quelqu'un tombe ici en cherchant sur le net :o
 
Il faut modifier la variable CMake :  

CMAKE_LINK_LIBRARY_FLAG


et affecter une chaîne vide ("" ).
 
Et il existe des déclinaisons par langage :  

CMAKE_<LANGUAGE>_LINK_LIBRARY_FLAG


 
Donc dans certaines cas c'est aussi les variables  

CMAKE_C_LINK_LIBRARY_FLAG
CMAKE_CXX_LINK_LIBRARY_FLAG


 
Voilà :jap:


---------------
( ͡° ͜ʖ ͡°) ( ͡⊙ ͜ʖ ͡⊙) ( ͡◉ ͜ʖ ͡◉)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed