generate_export_header典型用法

时间:2012-10-05 00:53:33

标签: dll cmake

我正在尝试使用generate_export_header函数。我的库源代码位于src文件夹中,因此CMake会在src/mylib_export.h生成导出标头。为了使用这个导出标题,我只是将它复制到我的库的include文件夹中以在实现代码中使用吗?这是我正在使用的CMake代码的片段:

ADD_LIBRARY(${PROJECT_NAME} ${LIB_TYPE} ${SOURCES})
GENERATE_EXPORT_HEADER(${PROJECT_NAME})

FILE(COPY 
    ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_export.h 
    DESTINATION 
    ${PROJECT_SOURCE_DIR}/include
)

是否有更多的CMake方法可以做到这一点?

2 个答案:

答案 0 :(得分:2)

当我使用CMake执行此操作时,我通常会将二进制文件夹添加到include_directories,并且根本不复制导出标头。

这样源代码树中没有任何生成的部分,这使得它更容易与源代码控制一起使用,而且我通常构建我的项目,每个源代码树有超过1个构建树,主要是为了允许在超过1的情况下构建使用不同的设置编译或构建或使用相同的编译器分离32位/ 64位构建树。

答案 1 :(得分:0)

我更喜欢将 export.h 复制到源文件夹并将其添加到 .gitignore,对于特定于应用程序的 config.h 也是如此。

generate_export_header (
  ...
  EXPORT_FILE_NAME "${CMAKE_CURRENT_SOURCE_DIR}/export.h"
)
configure_file ("config.h.in" "${CMAKE_CURRENT_SOURCE_DIR}/config.h")

原因是 clang 代码突出显示和格式设置。 export.hconfig.h 现在看起来如何(这些文件将在构建之前更新)无关紧要,您只需要在带有空 build 文件夹的文本编辑器中正确突出显示和格式化您的代码.