Jenkins + CMake用于多个操作系统和库版本

时间:2013-02-26 16:08:00

标签: c++ jenkins cmake

使用CMake为多个操作系统(Win7,MacOS和Linux)编译了我的C ++程序。

对于依赖操作系统的东西,我做的事情是:

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级别(或两者)工作是否更好。

1 个答案:

答案 0 :(得分:1)

这里可能没有“正确”的答案。 CMake的目的是提供跨平台制作(因此得名),因此,它提供了许多方法来减少或消除特定于平台的代码。

我倾向于发现我需要特定于平台的块的大多数情况是在依赖项查找(find_libraryfind_file等)或设置编译器/链接器标志。 (当然,我的经验可能不典型,甚至适用于您的情况)。这通常意味着给定的CMakeLists文件中没有太多地方需要平台或编译器特定的代码。

清理的一种可能方法是将所有特定于平台的代码放在单独的文件中,并且只在if elseif else块中放置include