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()生成的变量?的主要内容,如果未能解决你的问题,请参考以下文章