我有一个像这样的顶级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)
我的问题是,我可以将上述代码段用于所有共享库吗?如果是这样,我应该如何以及在何处放置它?
答案 0 :(得分:0)
您只能通过一次调用来参数化多个库。您必须为每个共享库使用GenerateExportHeader
。
因此,您GENERATE_EXPORT_HEADER
只能打libA
一个,libB
一个,libC
一个,每个都有自己的参数。