CMake错误:CMake无法确定目标的链接器语言:myapp

时间:2015-06-30 05:56:11

标签: c++ cmake

我正在尝试通过cmake编译vMime,但我收到错误, 我正在使用cmake的图形界面,我的makefiles.txt如下所示。它配置正确但不生成

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)

帮助将受到高度赞赏,因为我被困在了几天。

3 个答案:

答案 0 :(得分:8)

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)

请注意,通常根本不需要它。

答案 1 :(得分:2)

对于其他人'好处,请确保您没有忽略之前的错误,例如:

Cannot find source file:

    MyFirstSourceFile.cpp

另一种导致CMake给你错误的方法,&#34; CMake错误:CMake无法确定目标的链接器语言:myapp&#34;,如果你错误地将它指向不存在的源。< / p>

例如:我将文件从一个目录移动到另一个目录,并在我的CMakeLists.txt中使用移动后路径预移动文件。我的输出窗口不是很高,我太过关注&#34;无法确定链接器语言&#34;错误!

答案 2 :(得分:0)

我使用基于cmake的clion IDE,我的源文件名为* .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&#34; src / main.cc&#34;)我必须指定相对路径,然后才能工作。