我想编写一个cmake脚本,它将针对多个版本的头文件编译相同的源代码。目的是能够轻松创建与早期版本的API向后兼容的共享库。
我正在寻找有关最佳方法的示例和指示。
我是c ++和cmake的新手,所以非常感谢任何帮助。
答案 0 :(得分:4)
这个答案有点偏离我的头脑,所以带上一粒盐。
在您的源代码中执行以下操作:
#ifdef Version_1_0 #include "Header_1_0.h" #endif #ifdef Version_2_0 #include "Header_2_0.h" #endif
在CMakeLists.txt文件中执行以下操作:
add_library ( Foo_Version_1_0 SHARED Foo.cxx Header_1_0.h ) # When you compile Foo_Version_1_0, define "Version_1_0" set_target_properties ( Foo_Version_1_0 PROPERTIES COMPILE_FLAGS -DVersion1_0 ) # Likewise for Version_2_0 ...
完成构建后,您应该有两个名为libFoo_Version_1_0.so和libFoo_Version_2_0.so的库。
干杯,
-Dan