首页 > 解决方案 > CMake无法在子目录中找到源文件

问题描述

我试图用cmake配置我的一个c++项目,项目的结构如下:

顶级 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 很陌生,所以我不确定我做错了什么。

标签: c++cmakecompilationsubdirectory

解决方案


推荐阅读