CMake:add_library()生成的变量?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CMake:add_library()生成的变量?相关的知识,希望对你有一定的参考价值。

我正在复活一个已有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()调用的副作用而创建的变量?如果是这样,我在哪里可以找到其他生成变量的列表?

答案

IIRC,foo_EXPORTS定义在构建foo目标时由CMake添加。这种方式在构建库时设置为export,在从另一个目标中使用时设置为import

有一个特殊的CMake module,可以很容易地生成这样的标题。

以上是关于CMake:add_library()生成的变量?的主要内容,如果未能解决你的问题,请参考以下文章

CMake同时生成静态库和动态库

cmake build方面的指令

CMake中add_library的使用

[cmake][转载]add_library详解

为啥 CMake 没有与我的自定义库(add_library/set_property)链接?

CMake 使 add_library 依赖于 ExternalProject_Add