c++ - CMake无法在子目录中找到源文件
问题描述
我试图用cmake配置我的一个c++项目,项目的结构如下:
- 更好的国际象棋
- 构建(cmake 文件)
- 包括
- 项目的 .h 文件
- CMakeLists.txt
- 源代码
- 项目的 .cpp 文件
- CMakeLists.txt
- res(图像和其他资源)
- CMakeLists.txt
顶级 CMakeLists.txt 如下所示:
cmake_minimum_required(VERSION 3.0.0)
project(BetterChess VERSION 0.1.0)
include(CTest)
enable_testing()
add_subdirectory(${PROJECT_SOURCE_DIR}/src)
add_subdirectory(${PROJECT_SOURCE_DIR}/include)
add_executable(${PROJECT_NAME} SOURCES HEADERS)
target_include_directories(${PROJECT_NAME} PUBLIC ${PROJECT_SOURCE_DIR}/include)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)
而两个子目录中的CMakeLists.txt如下:
set(HEADERS
Bishop.h
Board.h
BoardV.h
Chessboard.h
consts.h
Game.h
King.h
Knight.h
Pawn.h
Piece.h
PromotionMenu.h
Queen.h
Rook.h
)
set(SOURCES
Bishop.cpp
Board.cpp
BoardV.cpp
Chessboard.cpp
Game.cpp
King.cpp
Knight.cpp
Main.cpp
Pawn.cpp
Piece.cpp
PromotionMenu.cpp
Queen.cpp
Rook.cpp
)
我正在尝试在各自的子目录中设置 SOURCES 和 HEADERS 变量,然后将它们添加到顶层的可执行文件中进行编译,但是 CMake 似乎无法找到 SOURCES:
[build] CMake Error at CMakeLists.txt:11 (add_executable):
[build] Cannot find source file:
[build] SOURCES
有没有办法做到这一点,或者可能是编译项目的更好方法?我对 CMake 很陌生,所以我不确定我做错了什么。
解决方案
推荐阅读
- ubuntu - Apache solr 没有在 macos catalina 上监听 8983
- reactjs - 从 assets>movies>Image.png 导入图像到 React 中的新模块
- java - 无法在 Eclipse 中建立到 Oracle DBMS 的 JDBC 连接
- reactjs - 我该如何测试这个?
- c# - 另一个“对象未设置为对象的实例”错误
- reactjs - 与 setInterval() 结合使用 React 钩子状态更新中的奇怪行为
- neural-network - 如何创建对象检测模型
- javascript - 如何使用 Javascript 检测是否从 CloudFront 提供缓存版本?
- java - 使用 save Hibernate 时如何避免更新子表?
- php - 在 CakePHP Web 应用程序中自动排序表