2

我正在尝试使用 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 方式来做到这一点?

4

2 回答 2

5

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

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

于 2012-10-08T15:22:46.980 回答
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.h现在看起来如何和看起来并不重要config.h(这些文件将在构建之前更新),您只需要在带有空build文件夹的文本编辑器中正确突出显示和格式化您的代码。

于 2021-03-13T22:21:46.573 回答