2014-09-23 144 views
1

我從官方網站下載了可移植CMake版本,並將其安裝到我的主目錄(~/usr)中,因爲我沒有root或sudo權限。如何在CMakeLists.txt中指定安裝CMake的路徑

如何指定在CMakeLists.txt中安裝CMake的路徑,例如~/usr/cmake-path/bin/cmake

注意:我不想使用CMake的默認版本的Linux系統上它太舊(2.6版本)

PS:

我知道變量CMAKE_COMMAND的這可能對我的問題有用,但我不知道如何使用它!

cmake path/to/sourcedir \ 
    -DCMAKE_INSTALL_PREFIX=path/to/install \ 

不要忘了先於任何CMAKE_FLAGS-D

+0

爲什麼你想要這條路? – wRAR 2014-09-23 05:49:15

回答

2

的CMake會使用任何路徑運行CMake的可執行文件中。此外,它可能會感到困惑,如果。您可以在運行之間切換路徑而不清除緩存。

所以你要做的只是從命令行運行cmake <path_to_src>而不是運行~/usr/cmake-path/bin/cmake <path_to_src>

您可能希望將一個別名或shell腳本添加到更具可鍵入性的路徑中(因此您只需鍵入my_cmake <path_to_src>或類似內容即可)。

請注意,通過編輯CMakeLists.txt並沒有乾淨的方法來解決這個問題。理論上講,你可以讓CMake 2.6運行一個外部CMake腳本,它只能從3.0可執行文件運行一個內部CMake腳本,這只是一個骯髒的黑客。只需從命令行運行正確的可執行文件,你應該沒問題。

+0

我必須先嚐試一下,howerver,'cmake_need_version'仍然會檢查系統的默認版本,而不是自定義版本,儘管我已經設置了'export alias cmake =「〜/ usr/cmake-path/bin/cmake',感謝您的幫助! – YoungkingWang 2014-09-23 09:00:20

+0

@YoungkingWang請確保您確實運行正確的可執行文件。'cmake_minimum_required'不應該關心繫統上的任何其他已安裝版本,只能查看當前正在運行的二進制文件。 – ComicSansMS 2014-09-23 09:22:02

-2

您在CMake構建過程中進行如下設置使用標誌CMAKE_INSTALL_PREFIX安裝目錄。

如果要包括自定義您的CMakeLists.txt安裝前綴,那麼你可以包括以下內容:

SET(MY_INSTALL_PREFIX "/path/to/install" CACHE PATH "Prefix added to install directories") 
SET(CMAKE_INSTALL_PREFIX "${MY_INSTALL_PREFIX}" CACHE INTERNAL "Prefix added to install directories" FORCE) 
1

我覺得更強大的解決方案是將您的cmake路徑預先安裝到PATH環境變量。

export PATH=~/usr/cmake-path/bin:$PATH 

如果您在Ubuntu/Debian系統上,您可以將此命令添加到您的〜/ .bashrc中,以便在每個終端會話中執行該命令。請注意,此更改只會影響您的帳戶,您可以在沒有管理員權限的情況下對其進行設置。

這樣你只需要鍵入cmake並且首先找到想要的版本。

+1

如果你只需要運行更新的CMake版本,這是非常合理的建議。我個人更喜歡顯式的方法,因爲通常很容易看到什麼時候出現錯誤(例如,當自定義可執行文件被移動或刪除時出於某種原因),但我可以看到人們爲了方便可能更喜歡這個。 – ComicSansMS 2014-09-23 09:24:26

+0

@ComicSansMS這很有道理,但同時CMake要求設置'minimum_cmake_required'([從版本2.6.0開始](http://www.cmake.org/cmake/help/v3.0/policy/CMP0000 .html)),如果設置爲較新的版本,將很快引起用戶的注意。 – jmstoker 2014-09-23 09:36:04

相關問題