【发布时间】:2021-03-26 15:28:53
【问题描述】:
更新:已修复我更正了下面的 CMakeLists.txt 文件:我遗漏了一个斜线。所以解决方案是将${CMAKE_CURRENT_LIST_DIR} 添加到target_include_directories 的路径中。
我正在尝试将 libharu 用作子项目。我已在 libharu 目录中的项目中将其设置为 git 子模块,并对CMakeLists.txt 文件进行了编辑(将CMAKE_*_DIR 引用更改为PROJECT_*_DIR,因此它会根据提出的未解决问题表现为子项目图书馆)。
在我的主要CMakeLists.txt 文件中(根据 cmets 和答案中的建议进行了编辑)
add_subdirectory(libharu)
add_executable ( gftopdf)
target_link_libraries(gftopdf libharu)
target_sources(gftopdf PRIVATE
main.cpp
Bitmap.cpp
GFReader.cpp
PDFWriter.cpp
)
target_include_directories(gftopdf PRIVATE ${CMAKE_CURRENT_LIST_DIR}/libharu/include)
(我也尝试过在target_include_directories 上不使用include)但是当我尝试这样做时
#include "hpdf.h"
我收到一个错误'hpdf.h' file not found。我假设这是非常基本的东西,但我是 CMake 的新手。
我确实看到我有这个可能相关的警告:
CMake Warning (dev):
Policy CMP0042 is not set: MACOSX_RPATH is enabled by default. Run "cmake
--help-policy CMP0042" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
MACOSX_RPATH is not specified for the following targets:
hpdf
(当我进行更改时,CLion 在向我显示 CMake 运行输出时不一致,所以我之前没有注意到这一点。)添加
set(CMAKE_MACOSX_RPATH 0)
(或1)删除警告但没有解决问题,所以我怀疑它无关。
【问题讨论】:
-
add_executable应该高于target_include_directories。这个add_subdirectory(libharu)也令人不安。 -
"我的代码说找不到 hpdf.h。" - 请提供(添加到问题帖子中)确切的错误消息,其中包括有关所涉及文件的信息。
-
@MarekR 为什么
add_subdirectory(libharu)令人不安? -
@Tsyvarev 确切的错误消息是
'hpdf.h' file not found。 -
那么,您是否在原始代码中使用了
CMAKE_CURRENT_LIST_DIR,它会出现错误?如目前所写,${CMAKE_CURRENT_LIST_DIR}libharu/include在变量的取消引用和libharu之间缺少一个斜线 (/)。