【问题标题】:Cmake can't find source files where they existsCmake找不到它们存在的源文件
【发布时间】:2017-03-22 13:44:57
【问题描述】:

我有一个非常简单的 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 LFLF 作为结束符号,结果是一样的。

cmake 版本 2.8.12.2

【问题讨论】:

    标签: linux cmake


    【解决方案1】:

    不要在${TEST_CPP}周围加上引号:

    add_executable(testproj ${TEST_CPP} ${TEST_HEADERS})
    

    否则它会将源添加为; 分隔列表。

    只是一个提示:您不需要在所有内容前加上 ${PROJECT_SOURCE_DIR}(它由 CMake 自动完成)。

    参考

    【讨论】:

    • 是的,这行得通。感谢您提供如此部署的答案。 7分钟后我就能接受了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多