2012-04-18 36 views
5

我使用cmake並cpack建立我的項目,並建立包他們的鏈接。我創建我的項目數的可執行文件,我們姑且稱之爲EXE1EXE2cmake的:安裝可執行文件,並創建

當創建不同版本的可執行文件,我想的名字,以反映執行的版本(假設EXE1_1.0.0)。我可以通過執行set_target_properties來更改目標輸出的名稱。

然而,現在在做一個install的時候,我想要做的創建符號鏈接到可執行的這個版本的名字,也就是我想有

  • 的「版本」可執行文件安裝在bin目錄,即EXE1_1.0.0
  • 創建一個符號鏈接到「版本」執行,即創建符號鏈接EXE1,它指向EXE1_1.0.0

可有人建議我如何做這個?

第二個問題是: 如何安裝配置文件在/ etc/MYPROJECT /目錄?我需要什麼目標使用的配置文件,就像我使用的庫bin可執行文件和lib?使用像/etc這樣的絕對路徑是cmake可接受的練習嗎?

+0

你應該通過發佈給你的CMake的郵件列表上的答案在這裏回答你自己的問題。 – Fraser 2012-04-20 22:45:59

+0

謝謝你指出這一點。 – Lazylabs 2012-04-24 11:45:16

回答

3

我問CMake的郵件列表,在這個問題上隨後,這是我收到的迴應:

答案的有效性將取決於CMake的版本,您使用 並設置平臺的要支持。

符號鏈接都不是便攜式

一)創建可能不被[當前]做可移植的,但如果你是 目標的Unix您可以使用cmake的-E create_symlink創建一個。

b)取決於您使用的CPack生成器和CMake/CPack版本
符號鏈接可能嵌入或不包含在軟件包中。

即CPack預2.8.7不能創建一個包含 符號鏈接CPack 2.8.8現在可以做的是ZIP壓縮文件。

然後你可以使用一個安裝(腳本...或安裝(CODE ...)這樣做 在安裝時。

另一種選擇,如果你正在使用RPM是使用特定的後封裝 安裝腳本。cpack --help變量 CPACK_RPM_POST_INSTALL_SCRIPT_FILE

這最後的解決方案將關閉過程僅適用於CPack RPM工作。

對於第二個問題

你可以使用絕對目標路徑,它們應該僅僅由CPack DEB和RPM來處理 ,我不知道其他。

如果你的軟件應該被安裝在Windows上,這將不會工作 與檔案生成器(ZIP,TGZ等)和/或NSIS。

可能是你可以這樣做:

如果(UNIX和不是蘋果)設置(CONFDEST 「的/ etc/$ {CMAKE_PROJECT_NAME}」) 其他()設置(CONFDEST 「ETC」)ENDIF()

安裝(FILES yourconffile DESTINATION $ {} CONFDEST)