在他的 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)
来自官方文档:
关于c++ - 我真的应该将头文件指定为 target_sources() 吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59586495/