web-dev-qa-db-fra.com

Erreur CMake: CMake ne peut pas déterminer la langue de l'éditeur de liens pour la cible: myapp

J'essaie de compiler vMime par cmake, mais j'obtiens une erreur ci-dessus. J'utilise l'interface graphique de cmake et mon fichier makefiles.txt se trouve ci-dessous. Il configure correctement mais ne génère pas

cmake_minimum_required(VERSION 2.8)
PROJECT(CXX)#vmime
enable_language(CXX)
set(VerifyCXX VerifyCXX.cxx)
add_definitions(-DVERIFY_CXX)
set_target_properties(${TARGET} PROPERTIES LINKER_LANGUAGE Cxx)
add_executable(myapp vmime)
install(TARGETS myapp DESTINATION bin)

L'aide sera très appréciée car je suis bloquée au point pendant quelques jours.

6
Ahsan Roy

CMake ne peut probablement pas déterminer le langage de l'éditeur de liens pour la cible myapp, car la cible ne contient aucun fichier source avec des extensions reconnues.

add_executable(myapp vmime)

devrait probablement être remplacé par

add_executable(myapp ${VerifyCXX})

Aussi cette commande

set_target_properties(${TARGET} PROPERTIES LINKER_LANGUAGE Cxx) 

ne peut pas réussir, car ${TARGET} est utilisé avant la définition. Vous devriez l'appeler après add_executable

set_target_properties(myapp PROPERTIES LINKER_LANGUAGE CXX)

Notez que ce n'est généralement pas nécessaire.

8
Peter

Pour le bénéfice des autres, assurez-vous de ne pas négliger une erreur antérieure telle que:

Cannot find source file:

    MyFirstSourceFile.cpp

Une autre façon de faire en sorte que CMake vous donne l'erreur, "Erreur CMake: CMake ne peut pas déterminer le langage de l'éditeur de liens pour target: myapp", consiste à le pointer par erreur exclusivement sur des sources inexistantes.

Par exemple: je déplace des fichiers d'un répertoire à un autre et j'avais les fichiers de pré-déplacement avec les chemins de post-déplacement dans mon CMakeLists.txt. Ma fenêtre de sortie n'est pas très grande et je me suis concentré trop tôt sur l'erreur "impossible de déterminer le langage de l'éditeur de liens"!

2
sage

J'utilise clion IDE basé sur cmake, mes fichiers sources nommés * .cc

project(server)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
file(GLOB SRC_FILE "main.cc" "listenfd.cc" "socket_util.cc"
    "timers.cc" "network.cc" "main_event.cc")
add_executable(server ${server})
set_target_properties(server PROPERTIES LINKER_LANGUAGE CXX)

après que je change

add_executable(server ${server}) to 
add_executable(server "main.cc")

alors je l'ai résolu, je ne sais vraiment pas pourquoi? Après l'expérience, j'ai trouvé que lorsque je utilisais un fichier (GLOB ...) comme un fichier (GLOB "src/main.cc"), je devais spécifier le chemin relatif, puis cela fonctionnait.

0
Jayhello