2015-06-30 3 views
4

Я пытаюсь скомпилировать vMime с помощью cmake, но я получаю ошибку выше, Я использую графический интерфейс cmake и мой makefiles.txt ниже. Она настраивает должным образом, но не генерироватьОшибка CMake: CMake не может определить язык компоновщика для цели: myapp

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) 

Помощь будет высоко оценена, как я застрял в точке на пару дней.

+0

Какая версия 'cmake' у вас есть? Мне кажется, что у вас 2,8 или менее установлен, но [текущая версия выглядит как 3.2.3] (http://www.cmake.org/download/). Если да, можете ли вы перейти на новую версию? –

ответ

2
cmake_minimum_required(VERSION 2.8) 
project(vmime) 
add_executable(vmime VerifyCXX.cxx) 

Вам может понадобиться добавить определения и установки, но это должно быть достаточно, чтобы вы начали, если у вас есть файл с именем VerifyCXX.cxx - под Linux имена файлов чувствительны к регистру.

6

CMake, вероятно, не может определить язык компоновщика для цели myapp, поскольку цель не содержит исходных файлов с распознанными расширениями.

add_executable(myapp vmime) 

должно быть, вероятно, заменен

add_executable(myapp ${VerifyCXX}) 

Также эта команда

set_target_properties(${TARGET} PROPERTIES LINKER_LANGUAGE Cxx) 

не может быть успешным, так как ${TARGET} используется ранее не установлено. Вы должны назвать это после того, как add_executable

set_target_properties(myapp PROPERTIES LINKER_LANGUAGE CXX) 

Обратите внимание, что, как правило, он не нужен вообще.

+0

Thankx, это было действительно полезно. –

2

для пользы других, убедитесь, что вы не упускать из вида более ранняя ошибки, такие как:

Cannot find source file: 

    MyFirstSourceFile.cpp 

Другим способом вызвать CMake, чтобы дать вам сообщение об ошибке «CMake Ошибка: CMake не может определить язык компоновщика для target: myapp ", если вы ошибочно указываете его исключительно на источники, которых не существует.

Например, я перемещаю файлы из одного каталога в другой и имел файлы предварительного перемещения с путями после перемещения в моем CMakeLists.txt. Мое окно вывода не очень высокое, и я слишком быстро сосредоточился на ошибке «не могу определить язык компоновщика»!

0

Я использую clion IDE на основе CMake, мои исходные файлы с именем * .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) 

после меняю

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

тогда я решил, я действительно не знаю, почему? после эксперимента, который я нашел при использовании файла (GLOB ....), подобного файлу (GLOB «src/main.cc»). Я должен указать относительный путь, а затем он работает.