我的C++程序是使用CMake针对多种操作系统(Win7,MacOS & Linux)编译的。Jenkins + CMake适用于多种操作系统和库版本
对于OS相关的东西,我在做喜欢的东西:
if (${APPLE})
// Do MacOS dependent things here
elseif(${WIN32})
// Do Win dependent things here
elseif(${UNIX})
// Do Linux dependent things here
endif (${APPLE})
现在,我需要我的程序在不同版本库的链接。以同样的方式继续将很快变得不切实际。
我怎样才能编译我的程序多个操作系统对多个版本的库,同时保持一切实用,这样很容易添加新的操作系统和/或新版本的库?
最终,一切都将与詹金斯整合,所以我不知道在CMake或Jenkins水平(或两者)工作是否更好。
感谢您的回答。对于每个库和每个操作系统,您需要不同的头文件/二进制文件路径。 find_library和find_file只适用于“标准”库吗? – Korchkidu 2013-02-27 06:46:35
另外,我需要使用同一个库的几个版本。那么,为每个版本编写一个CMake会更好吗?或者将库版本作为参数传递给CMake? – Korchkidu 2013-02-27 08:04:41
'find_library'和'find_file'可以用于*任何*库或文件 - 不只是标准的。通过添加搜索路径,您可以帮助CMake在非标准位置查找项目。至于您对版本的问题,我会亲自将所需的最低版本编码到CMake文件中。似乎有点奇怪,不同的平台需要不同的版本。可能值得一看,将它们全部引入相同的版本? – Fraser 2013-02-27 23:55:50