我的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