CMake:由add_library()生成的变量?

时间:2018-12-05 10:45:33

标签: cmake

我正在恢复一个已有10年历史的C ++项目,该项目的顶级CMakeLists.txt文件将BUILD_TYPE_SDK变量设置为STATIC或SHARED,并且库级别的CMakeLists.txt包含以下行:

    ADD_LIBRARY(foo ${BUILD_TYPE_SDK} ${PROJECT_SRCS} ${PROJECT_INCS})

,我有一个C ++头文件[为了清楚起见,已重新格式化],它正在测试:

    #ifdef foo_EXPORTS
    #      define FOO_DLL_DEF __declspec(dllexport)
    #else
    #   ifdef foo_STATIC
    #      define FOO_DLL_DEF
    #   else
    #      define FOO_DLL_DEF __declspec(dllimport)
    #   endif
    #endif

一切似乎都有效,但是我在哪里找不到或声明foo_EXPORTS。

foo_EXPORTS是作为ADD_LIBRARY()调用的副作用创建的变量吗?如果是这样,我在哪里可以找到其他生成的变量的列表?

1 个答案:

答案 0 :(得分:0)

IIRC,foo_EXPORTS定义是在构建foo目标时由CMake添加的。这样,在构建库时将其设置为export,而在另一个目标中使用它时将其设置为import

有一个特殊的CMake module,可以轻松生成此类标头。