首页 > 解决方案 > 如何在 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

当我cmake ..build目录中运行时,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 How can I print the value ofPROJECT_SOURCE_DIR 顺便说一句,我不知道为什么 cmake 无法编译我的项目

标签: c++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)

推荐阅读