cmake and GenerateExportHeader
cmake and GenerateExportHeader
我试图使用GenerateExportHeader模块从cmake。
我的CmakeLists.txt的一部分:
add_compiler_export_flags()
add_library(gui SHARED ${gui_CPP} ${gui_HPP})
generate_export_header(gui)
对于gui项目本身来说工作得很好,但是当我试图在另一个项目中包含gui的.h文件时,无法找到#include "gui_export.h"。这很明显,因为gui_export.h是在gui的构建目录中创建的,而不是在其他项目的包含路径中。
简单的解决方案是将gui的构建目录添加到其他项目的包含但是:1. 我觉得这不是一个好的解决方案2. 我甚至不知道如何找到目标目录
的构建目录我怎样才能很好地解决这个问题?
我已经通过使用EXPORT_FILE_NAME解决了这个问题,所以现在我有:
generate_export_header(gui EXPORT_FILE_NAME ${CMAKE_BINARY_DIR}/exports/gui_export.h)
和在所有项目我添加${CMAKE_BINARY_DIR}/exports/包括
使用现代(即2.8.11或更高版本)的CMake,首选机制是:
target_include_directories(gui PUBLIC ${CMAKE_BINARY_DIR}/exports)
然后,当你导出()你的库(你应该这样做!)或以其他方式使用它在一个上下文的目标接口属性是已知的(例如在相同的整体CMake项目,这似乎是你正在做的),target_link_libraries(foo gui)也将捡起必要的包括目录。
把它放在一个众所周知的目录是正交的。无论哪种情况,都建议使用target_include_directories来告诉用户在哪里可以找到库的头文件。
使用export()允许CMake找到你的构建树。您可以查看githugithugi上的openobex,了解如何配置。Cmake文件必须看起来像。
OTOH,你不应该在你的公共头文件中使用生成的导出头文件或安装它。
相关文章:
- 没有找到相关文章