cmake errors:找不到源文件

时间:2017-07-15 19:10:20

标签: c++ cmake

我第一次尝试使用cmake而且我很难让它工作。这里有一个源文件和一个库文件(分别为Lab_4.cppTrip_4.cpp),它们都在源文件夹(Lab_4)中。到目前为止,我的cmake文件中包含了以下内容:

cmake_minimum_required (VERSION 2.6)
project (Lab_4)

#add executable
add_executable(Lab_4 ${PROJECT_SOURCE DIR}/Lab_4.cxx)
target_link_libraries (Lab_4 ${EXTRA_LISTS})

#add libraries
add_library (${PROJECT_SOURCE_DIR}/Trip.cxx)

ls显示两个文件都在该文件夹中。我对cmake真的很陌生,所以我确定我犯了一个明显的错误,但我不知道它是什么。任何帮助将不胜感激!

2 个答案:

答案 0 :(得分:0)

要将源添加到CMake项目,可以使用aux_source_directory命令。如果您的来源位于Lab_4文件夹中,则可以执行以下操作:

project(Lab_4)

aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/Lab_4 LAB4_SOURCES)
add_executable(Lab_4 ${LAB4_SOURCES})

CMAKE_CURRENT_SOURCE_DIR是当前CMakeFiles.txt所在目录的路径。上面的示例不会将Trip_4.cpp构建为库,而是将其与Lab_4.cpp一起用作另一个源文件。

如果您希望将Trip_4.cpp构建为库拳头,我建议将其与Lab_4.cpp分开,以便以后使用更轻松。示例目录结构可以是:

MyProject/
|-- app/
|   |-- src/
|   |   `-- Lab_4.cpp
|   |-- inc/
|   `-- CMakeLists.txt
|-- lib/
|   |-- src/
|   |   `-- Trip_4.cpp
|   |-- inc/
|   `-- CMakeLists.txt
`-- CMakeLists.txt

在这种情况下,MyProject/lib/CMakeLists.txt将包含以下内容:

project(Trip_4)

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/inc)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src TRIP4_SOURCES)

add_library(Trip_4 ${TRIP4_SOURCES})

MyProject/app/CMakeLists.txt几乎与我在第一个示例中显示的相同,但现在它必须保持对Trip_4库的依赖:

project(Lab_4)

include_directories(
    ${CMAKE_CURRENT_SOURCE_DIR}/../lib
    ${CMAKE_CURRENT_SOURCE_DIR}/inc
)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src LAB4_SOURCES)

add_executable(Lab_4 ${LAB4_SOURCES})
add_dependencies(Lab_4 Trip_4)
target_link_libraries(Lab_4 Trip_4)

最后,MyProject/CMakeLists.txt必须将库和可执行子项目绑定在一起,如下所示:

project(MyProject)

add_subdirectory(lib)
add_subdirectory(app)

答案 1 :(得分:0)

cmake_minimum_required(VERSION 2.6)
project(Lab_4)

add_library(Trip_4 Lab_4/Trip4.cpp)
add_executable(Lab_4 Lab_4/Lab_4.cpp)
target_link_libraries(Lab_4 Trip_4 ${EXTRA_LISTS})

您的确切意图并不完全清楚,但根据您当前的问题描述,以上是最简单的说明。

你绝对确定你的CMake是2.6版吗?您应该将版本更新为您当前使用的CMake(键入cmake --version以查找)。