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

8
我正在尝试使用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)

“几天以来,我被卡住了,非常感谢能够提供帮助。”

你使用的 cmake 版本是什么?在我看来,你安装的版本似乎是2.8或更低,但是当前版本似乎是3.2.3。如果是这样,请升级到新版本。 - Ken Y-N
3个回答

11

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)

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


谢谢,那真的很有用。 - Ahsan Roy

3

为了他人的利益,请确保您没有忽略早期的错误,例如:

Cannot find source file:

    MyFirstSourceFile.cpp
另一种导致CMake出现错误提示 "CMake Error: CMake can not determine linker language for target: myapp" 的方法是,如果您错误地将其仅指向不存在的源文件。
例如:我正在将文件从一个目录移动到另一个目录,并且在我的CMakeLists.txt中预先设置了移动前和移动后的路径。我的输出窗口不是很高,所以我太早关注了“无法确定链接器语言”的错误!

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")

然后我解决了它,我真的不知道为什么? 经过实验,我发现当使用file(GLOB ....)像file(GLOB "src/main.cc")这样的语句时,我必须指定相对路径,然后它才能正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接