我想使用cmake构建我的项目,我的CMakeLists.txt文件非常简单:
cmake_minimum_required(VERSION 3.20)
project(YuvParallelProcess)
message("$(PROJECT_SOURCE_DIR)")
include_directories($(PROJECT_SOURCE_DIR)/inc)
link_directories($(PROJECT_SOURCE_DIR)/lib/libyuv)
add_executable(YuvParallelProcess $(PROJECT_SOURCE_DIR)/src/main.cpp)
target_link_libraries(YuvParallelProcess libyuv.a)
我的项目文件按照以下方式组织:
YuvParallelProcess
build
data
inc
lib
src
CMakeLists.txt
当我在build
目录下运行cmake ..
命令时,终端会输出以下信息:
$(PROJECT_SOURCE_DIR)
-- Configuring done
CMake Error at CMakeLists.txt:10 (add_executable):
Cannot find source file:
$(PROJECT_SOURCE_DIR)/src/main.cpp
CMake Error at CMakeLists.txt:10 (add_executable):
No SOURCES given to target: YuvParallelProcess
我不知道为什么shell只打印出$(PROJECT_SOURCE_DIR)
而不是PROJECT_SOURCE_DIR
的值。如何打印出PROJECT_SOURCE_DIR
的值呢?另外,我弄不清楚为什么cmake无法编译我的项目。
CMAKE_CURRENT_SOURCE_DIR
,因为它引用包含当前CMakeLists.txt
文件的目录,无论是否有project()
命令;在更复杂的项目中,您可以在子目录中省略此命令。此外,我建议将包含/链接目录定义限制在需要它们的地方,并使用target_include_directories
/target_link_directories
。 - fabian