我正在编写一个 C++ 库(仅标头)并使用 CMake 生成我的(Visual Studio)项目和解决方案文件。我还在编写一个测试套件,它是同一个 CMake 项目的一部分。
当我在代表我的仅标头库的目标上调用 target_include_directories() 时会出现我的问题,以便我的库的使用者可以找到它的头文件。我收到以下错误消息(即使生成未中止)。
CMake Error in CMakeLists.txt:
Target "Fonts" INTERFACE_INCLUDE_DIRECTORIES property contains path:
"D:/Projects/GPC/fonts/include"
which is prefixed in the source directory.
(D:/Projects/GPC/Fonts 是我的库项目的顶级目录。顺便说一句,如果我将头文件移动到顶级目录,问题仍然存在。)
我的 CMakeLists.txt 中的违规行是这样的(为简单起见而改编):
target_include_directories(Fonts INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include")
我不明白我做错了什么。如果没有 target_include_directories(),消费者项目的代码根本无法包含我的头文件(除非以安装形式,但我还没有做到这一点,无论如何我希望能够从它的构建树中使用我的库,无需安装。)
我觉得我在这里缺少一些基本的东西;但是我已经搜索了几个小时而没有找到解决方案或解释。