我正在恢复一个已有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()调用的副作用创建的变量吗?如果是这样,我在哪里可以找到其他生成的变量的列表?
答案 0 :(得分:0)
IIRC,foo_EXPORTS
定义是在构建foo
目标时由CMake添加的。这样,在构建库时将其设置为export
,而在另一个目标中使用它时将其设置为import
。
有一个特殊的CMake module,可以轻松生成此类标头。