繁体   English   中英

如何在 CMake 中打印变量?

[英]How to print variables in CMake?

我想用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 ..时,shell 会打印:

$(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 使用花括号来获取变量的值:

${PROJECT_SOURCE_DIR}

我建议转储如下消息,不要跳过空消息。

message(PROJECT_SOURCE_DIR="${PROJECT_SOURCE_DIR}")

Cmake 未能配置您的项目,因为它无法识别括号中的变量并认为$(PROJECT_SOURCE_DIR)是一个字符串文字。

有 CMakePrintHelpers Cmake 模块,用于像上面一样转储变量。

include(CMakePrintHelpers)
cmake_print_variables(PROJECT_SOURCE_DIR)

除了使用message ,您还可以使用cmake_print_variables来显示变量。 在这种情况下,您必须包括CMakePrintHelpers

include(CMakePrintHelpers)

cmake_print_variables(PROJECT_SOURCE_DIR)

输出将是:

-- PROJECT_SOURCE_DIR="path/to/your/project"

使用cmake_print_variables您还可以显示多个变量,如下所示:

cmake_print_variables(PROJECT_SOURCE_DIR ANOTHER_VARIABLE)

输出将是:

-- PROJECT_SOURCE_DIR="path/to/your/project" ; ANOTHER_VARIABLE="other variable"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM