如何为多个共享库导出单个头文件?

时间:2016-10-13 23:01:28

标签: cmake

我有一个像这样的顶级CMakeLists:

cmake_minimum_required(VERSION 3.6.2)

project(Template)

set(CMAKE_LINK_DEPENDS_NO_SHARED ON)

add_subdirectory(external/libA)
add_subdirectory(external/libB)
add_subdirectory(external/libC)

add_subdirectory(apps/app1)
add_subdirectory(apps/app2)

这是一个简单的项目,有3个共享库{libA, libB, libC}和几个使用这些库的可执行文件{app1, app2}

接下来我的问题是,我已经看到CMake提供了一些帮助,以避免编写自定义标头的编码,并搞乱使用.defs导出符号,如下所示:

include (GenerateExportHeader)
GENERATE_EXPORT_HEADER(libA
             BASE_NAME libA
             EXPORT_MACRO_NAME SHARED_EXPORT
             EXPORT_FILE_NAME shared_EXPORTS.h
             STATIC_DEFINE SHARED_EXPORTS_BUILT_AS_STATIC)

我的问题是,我可以将上述代码段用于所有共享库吗?如果是这样,我应该如何以及在何处放置它?

1 个答案:

答案 0 :(得分:0)

您只能通过一次调用来参数化多个库。您必须为每个共享库使用GenerateExportHeader

因此,您GENERATE_EXPORT_HEADER只能打libA一个,libB一个,libC一个,每个都有自己的参数。