我正在尝试通过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)
帮助将受到高度赞赏,因为我被困在了几天。
答案 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;)我必须指定相对路径,然后才能工作。