web-dev-qa-db-fra.com

CMake: utilisez un éditeur de liens personnalisé

Je veux configurer une chaîne d'outils personnalisée avec qmake. J'ai défini le compilateur mais je ne sais pas comment définir l'éditeur de liens. Cette erreur est signalée car cmake essaie d'utiliser le compilateur pour lier:

The C compiler "xgcc.exe" is not able to compile a simple test program.

Voici un extrait de mon fichier de chaîne d'outils

# specify the cross compiler
INCLUDE(CMakeForceCompiler)
SET(CMAKE_C_COMPILER   xgcc.exe)
SET(CMAKE_CXX_COMPILER xgcc.exe)
#CMAKE_FORCE_C_COMPILER(xgcc.exe GNU)
#CMAKE_FORCE_CXX_COMPILER(xgcc.exe GNU)

J'ai essayé de forcer le compilateur mais le problème de l'éditeur de liens ne sera pas résolu.

27
Breezeight

Je dois utiliser la variable CMAKE_CXX_LINK_EXECUTABLE, CMAKE_C_LINK_EXECUTABLE:

SET(CMAKE_C_LINK_EXECUTABLE "c:\\MoSync\\bin\\pipe-tool.exe")
11
Breezeight

La ligne de commande de liaison est définie dans Modules/CMake {C, CXX, Fortran} Information.cmake et utilise par défaut le compilateur , pas CMAKE_LINKER (voir - code source ). Cela peut être modifié en remplaçant la règle qui crée la ligne de commande de lien, qui réside dans les variables CMAKE_CXX_LINK_EXECUTABLE (et amis). NB cette variable n'indique pas le chemin vers l'exécutable de l'éditeur de liens; elle indique comment lier un exécutable!

Une approche consiste à définir cette règle pour utiliser l'éditeur de liens, par exemple.

cmake -DCMAKE_LINKER=/path/to/linker -DCMAKE_CXX_LINK_EXECUTABLE="<CMAKE_LINKER> <FLAGS> <CMAKE_CXX_LINK_FLAGS> <LINK_FLAGS> <OBJECTS> -o <TARGET> <LINK_LIBRARIES>"

Voir aussi cet article de la liste de diffusion CMake - cela fait également un endroit naturel pour ajouter un modificateur de l'éditeur de liens à un autre éditeur de liens.

20
mabraham

Définissez la variable $ {CMAKE_LINKER} soit dans CMakeCache.txt ou après ccmake. sous options avancées.

5
Gunther Piez