我想使用 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)
Run Code Online (Sandbox Code Playgroud)
我的项目文件的组织方式如下:
YuvParallelProcess
build
data
inc
lib
src
CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
当我cmake ..在build目录中运行时,外壳打印:
$(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
Run Code Online (Sandbox Code Playgroud)
我不知道为什么 shell 只打印$(PROJECT_SOURCE_DIR)除了值之外的值PROJECT_SOURCE_DIR
如何打印值PROJECT_SOURCE_DIR
顺便说一句,我不明白为什么 cmake 无法编译我的项目
S.M*_*.M. 43
Cmake 使用花括号来获取变量的值:
${PROJECT_SOURCE_DIR}
Run Code Online (Sandbox Code Playgroud)
我建议像下面这样转储消息,以免跳过空消息。
message(PROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}")
Run Code Online (Sandbox Code Playgroud)
Cmake 无法配置您的项目,因为它无法识别括号中的变量并被视为$(PROJECT_SOURCE_DIR)字符串文字。
有 CMakePrintHelpers Cmake 模块用于转储变量,与上面完全相同。
include(CMakePrintHelpers)
cmake_print_variables(PROJECT_SOURCE_DIR)
Run Code Online (Sandbox Code Playgroud)
小智 23
除了使用 之外message,您还可以使用cmake_print_variables显示变量。在这种情况下,您必须包括CMakePrintHelpers
include(CMakePrintHelpers)
cmake_print_variables(PROJECT_SOURCE_DIR)
Run Code Online (Sandbox Code Playgroud)
输出将是:
-- PROJECT_SOURCE_DIR="path/to/your/project"
Run Code Online (Sandbox Code Playgroud)
cmake_print_variables您还可以显示多个变量,如下所示:
cmake_print_variables(PROJECT_SOURCE_DIR ANOTHER_VARIABLE)
Run Code Online (Sandbox Code Playgroud)
输出将是:
-- PROJECT_SOURCE_DIR="path/to/your/project" ; ANOTHER_VARIABLE="other variable"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
87732 次 |
| 最近记录: |