Jenkins+CMake,适用于多个操作系统和库版本
Jenkins + CMake for multiple OS and library versions
我的C++程序是使用CMake为多个操作系统(Win7、MacOS和Linux(编译的。
对于依赖操作系统的东西,我正在做一些事情,比如:
if (${APPLE})
// Do MacOS dependent things here
elseif(${WIN32})
// Do Win dependent things here
elseif(${UNIX})
// Do Linux dependent things here
endif (${APPLE})
现在,我需要将我的程序与库的不同版本链接起来。继续这样做很快就会变得不切实际。
如何针对库的多个版本为多个操作系统编译程序,同时保持一切实用性,以便轻松添加新的操作系统和/或库的新版本
最终,一切都将与Jenkins集成,所以我不知道在CMake或Jenkins级别工作(或两者兼有(更好。
这里可能没有"正确"的答案。CMake的目的是提供跨平台Make(因此得名(,因此,它提供了许多减少或消除平台特定代码的方法。
我倾向于发现,我需要平台特定块的大多数情况要么是在依赖项查找(find_library
、find_file
等(期间,要么是设置编译器/链接器标志。(当然,我的经验可能不是典型的,甚至不适用于你的情况(。这通常意味着在给定的CMakeLists文件中没有太多地方需要平台或编译器特定的代码。
一种可能的清理方法是将所有特定于平台的代码都放在单独的文件中,并且在单个if
elseif
else
块中只放include
。
相关文章:
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 导入库可以跨dll版本工作吗
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 在clang++预处理器中确定gcc工具链版本
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 不同的Visual Studio版本中缺少.dll
- 用符号版本替换对函数的所有调用
- luaL_dofile在已知良好的字节码上失败,可以使用未编译的版本
- 正在解码MSVC 32位版本的程序集(作业).没有手术做什么
- 我需要分发哪些版本的可再分发文件
- 支持 CUDA 统一内存的系统分配器的操作系统版本
- 如何使用C++准确获取Windows操作系统版本
- dynamic_cast失败 - 具体取决于操作系统版本
- Visual Studio 2012支持哪种XP版本[作为目标操作系统]
- 确定用于在*ix操作系统上构建共享对象的编译器和版本
- MSVCP140.dll与操作系统/版本相关
- 有没有人能给我推荐一个c++库,可以在x86和x86_64版本的操作系统上进行串口通信
- Jenkins+CMake,适用于多个操作系统和库版本
- 如何使用C++获取当前Windows操作系统版本7及更高版本的当前默认设置语言
- 如何使用Visual C++编译器在Windows上构建库时正确设置目标操作系统版本