如何在cmakelist.txt中的变量内打印值

时间:2019-02-21 08:14:43

标签: linux cmake

我正在为最近的项目使用CMake,我想确认设置了正确的路径

set(_protobuf_include_path -I . -I ${_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR})

我使用message来检查_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR的值,但未在终端上打印任何内容

message( STATUS ${_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR} ) # no output for this

我的意图是构建Grpc1.14.1,有点与protobuf具有依赖性,因此我下载了protobuf 3.6.01,并将grpc和protobuf都保存在同一目录(home/user/src)中。

在建筑物中出现此错误

google/protobuf/stubs/common.h: No such file or directory
 #include <google/protobuf/stubs/common.h>

因此,我在目录protobuff.cmake中打开了gRPC/cmake,并更改了protobuf根路径

if(NOT PROTOBUF_ROOT_DIR)
  #set(PROTOBUF_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/third_party/protobuf)
  set(PROTOBUF_ROOT_DIR ../../ThirdParty/protobuf)
[...]

这样做之后,我仍然遇到同样的问题。

1 个答案:

答案 0 :(得分:0)

首先,与该问题无关,但与modern CMake的技术和用法有关。

为了设置包含路径,最好使用target_include_directories命令,例如

target_include_directories(mytarget 
  PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
  PUBLIC ${_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR}
  )

现在,对于实际的问题,如果可以显示${_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR}的实际设置(通过`-D在命令行中显示)选项会很有帮助?)但是可以这样打印:

message(STATUS "include dir: ${_gRPC_PROTOBUF_WELLKNOWN_INCLUDE_DIR}")

我怀疑实际变量内容中的虚假空格或类似内容。