我有非常简单的CMakeLists.txt文件。
cmake_minimum_required (VERSION 2.6)
project (test_proj)
set(TEST_INCLUDE_DIR
"${PROJECT_SOURCE_DIR}/src")
set(TEST_CPP "${PROJECT_SOURCE_DIR}/src/source_file.cpp"
"${PROJECT_SOURCE_DIR}/src/main.cpp")
set(TEST_HEADERS
"${PROJECT_SOURCE_DIR}/src/header.h")
#include_directories(${TEST_INCLUDE_DIR})
add_executable(testproj "${TEST_CPP}" "${TEST_HEADERS}")
当我这样运行时:
mkdir build
cd build
cmake ..
我得到下一个输出:
...
-- Configuring done
CMake Error at CMakeLists.txt:16 (add_executable):
Cannot find source file:
/home/me/test_proj/src/source_file.cpp;/home/me/test_proj/src/main.cpp
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
但那些文件:
/home/me/test_proj/src/source_file.cpp
/home/me/test_proj/src/main.cpp
有吗?正好在那条道路上。为什么它找不到它们?
如果我删除其中任何一个,那么TEST_CPP
只包含一个源文件,项目生成良好。但是,如果我有一个以上的来源,它为什么不能呢?
我尝试了CR LF
而LF
只作为结束符号,结果是一样的。
cmake版本2.8.12.2
答案 0 :(得分:4)
不要在${TEST_CPP}
附近加上引号:
add_executable(testproj ${TEST_CPP} ${TEST_HEADERS})
否则,它会将来源添加为;
分隔列表。
只是一个提示:你不需要用${PROJECT_SOURCE_DIR}
作为前缀(它由CMake自动完成)。
<强>参考强>