簡短問題: 在安裝過程中複製文件時,是否可以設置CMake遵循符號鏈接?如果是這樣做?CMake在安裝過程中遵循符號鏈接
詳細信息:我使用CMake來構建和安裝LLVM。在包含目錄中的LLVM源代碼樹中,我有一個符合LLVM開發的另一個子項目的符號鏈接。一切似乎都起作用,除了我注意到當我運行「cmake install」時,它複製了include目錄而沒有遵循符號鏈接。我遇到的問題是我的符號鏈接有一個相對路徑(因爲它在一個git倉庫中)。因此,當符號鏈接被複制(而不是跟隨並複製內容)時,它們不再指向正確的文件。例如我有dsa -> ../../llvm-poolalloc/include/dsa/
我想複製這個鏈接的內容,當我做安裝而不是複製鏈接。但是我還沒有找到cmake標誌。
我知道這可能不是想法的方法來組織我的項目,但我的東西,這已經到位的工作,這將是最好不必改變太多的目錄結構,因爲其他人我期望它是這樣的。所以我認爲能夠遵循符號鏈接可以解決我的問題,而不必重構整個構建系統。但我願意接受其他建議,以獲得更好的方式來完成我想要做的事情。
請注意,我在Linux(Ubuntu 10.04)中工作,並使用LLVM 2.6(我正在從源代碼與llvm-gcc一起編譯)。另外我正在使用CMake 2.8版。
編輯:
下面是從與安裝指令相關的CMakeLists.txt文件的源代碼:
install(DIRECTORY include
DESTINATION .
PATTERN ".svn" EXCLUDE
PATTERN "*.cmake" EXCLUDE
PATTERN "*.in" EXCLUDE
PATTERN "*.tmp" EXCLUDE
)
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/include
DESTINATION .
)
爲包括目錄列出目錄是:
dsa -> ../../llvm-poolalloc/include/dsa/
llvm
llvm-c
poolalloc -> ../../llvm-poolalloc/include/poolalloc
我想要的是dsa
和poolalloc
目錄被複制而不僅僅是複製符號鏈接。我不在符號鏈接中使用絕對路徑的原因是我將它們簽入了git回購。所以,當他們從回購中結賬時,我的絕對路徑會與從事項目工作的其他人不同。
你能顯示代碼,哪些安裝這些包括?另外,你可以使符號鏈接絕對。 – arrowd 2012-02-14 07:57:18
@arrowdodger,謝謝你看我的問題。我編輯它提供更多的細節,但讓我知道如果它仍然不清楚。我一直在尋找'install'的CMake文檔,我開始認爲我想做的事情是不可能的,所以我可能不得不想出另一個解決方案。但是我可能錯了,因爲有很多我不瞭解CMake。 – 2012-02-14 21:40:14