在他的 Meeting C++ 2019 talk(以及 2018 年)中,演示者 Deniz Bahadir 建议我们使用 target_sources() 指定目标的 C++ 头文件,其中一些是 PUBLIC 或 INTERFACE。

但是 - 当我尝试这样做时(使用相对路径,就像我以前使用好的旧 add_target() 一样),我得到了这种错误:

CMake Warning (dev) at CMakeLists.txt:26 (target_sources):
  Policy CMP0076 is not set: target_sources() command converts relative paths
  to absolute.  Run "cmake --help-policy CMP0076" for policy details.  Use
  the cmake_policy command to set the policy and suppress this warning.

  An interface source of target "cuda-api-wrappers" has a relative path.
This warning is for project developers.  Use -Wno-dev to suppress it.

-- Configuring done
CMake Error in CMakeLists.txt:
  Target "cuda-api-wrappers" INTERFACE_SOURCES property contains relative
  path:

    "src/cuda/api/miscellany.hpp"

那么,什么,我应该把头文件名放在生成器表达式中吗?我当然不希望我的源目录的绝对路径最终出现在库的界面中。这对我来说似乎很奇怪。也许我只是应该打扰 target_sources() 中的头文件?

PS - 在 Devuan 3 上使用 CMake 3.13.4。

最佳答案

如果 CMakeLists.txt 指定高于 3.13.0 的版本,此错误就会消失:

cmake_minimum_required(VERSION 3.13.0)

来自官方文档:
  • here

  • here

  • 关于c++ - 我真的应该将头文件指定为 target_sources() 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59586495/

    10-13 09:25