【发布时间】:2012-10-05 15:51:16
【问题描述】:
我想为Is it possible to get CMake to build both a static and shared version of the same library? 描述的同一库构建静态版本和共享版本
但是,源代码被编译两次,每个版本编译一次,这不是必需的。有什么办法可以避免吗?
目前我有:
add_library(${LIB} SHARED ${${LIB}_srcs})
add_library(${LIB}_static STATIC ${${LIB}_srcs})
为了只需要编译一次,我需要更改什么?供参考。我有相同的编译器标志和定义。
【问题讨论】:
-
这不是不同的编译器设置吗?我知道在 Visual Studio 上你肯定需要编译这 2 次(因为 dll 与静态库会有不同的编译器、链接器设置和定义)但是我不确定 gcc。
-
@drescherjm,在 Linux/Solaris 等上,您必须编译共享库对象文件以定位独立代码 - 使用 GCC/Solaris Studio/Clang 等,您提供 -fpic/-fPIC 来归档它。参照。我的回答。
标签: compilation cmake