2009-11-23 29 views
2

我一直在製作一款舊遊戲,我創建了CMake文件以擺脫Makefiles和Visual Studio項目的組合。一切正常,但我很難弄清楚什麼是開發人員指定輸出文件在運行時的複製位置的正確方法。在CMake中爲每個開發人員定製安裝輸出目錄的正確方法是什麼?

問題是,在測試代碼之前,有很多DLL和一些自定義目標需要將其輸出複製到包含遊戲數據(級別,藝術,聲音等)的目錄結構中。

我的安裝命令當前使用了一個變量,我在頂層CMakeLists.txt中'設置'來指定輸出目錄。我試着用cmake命令行上的-DD3_GAMEDIR覆蓋它。該變量被設置在CMakeCache中,但SET命令似乎仍然覆蓋它。

在使用SET查看用戶是否指定了一個值之前,我應該檢查變量的長度嗎?這對我來說似乎是一種破解,但我很難找到正確的方法來做到這一點。

謝謝!

回答

1

這裏是anwser,根據您的CMake版本:關於使用各種CMAKE_INSTALL_PREFIXPROJECT_SOURCE_DIRPROJECT_BINARY_DIR

SET(CMAKE_VERSION "${CMAKE_CACHE_MAJOR_VERSION}.${CMAKE_CACHE_MINOR_VERSION}") 
IF("${CMAKE_VERSION}" STRGREATER "2.4") 
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY /path/of/your/install/${CMAKE_BUILD_TYPE}/bin) 
SET(CMAKE_LIBRARY_OUTPUT_PATH /path/of/your/install/${CMAKE_BUILD_TYPE}/lib) 
ELSE("${CMAKE_VERSION}" STRGREATER "2.4") 
SET(EXECUTABLE_OUTPUT_PATH /path/of/your/install/${CMAKE_BUILD_TYPE}/bin) 
SET(LIBRARY_OUTPUT_PATH /path/of/your/install/${CMAKE_BUILD_TYPE}/lib) 
ENDIF("${CMAKE_VERSION}" STRGREATER "2.4") 
3

安裝目標支持DESTDIR參數,所以你可以這樣做:

make install DESTDIR="C:\RootGameDir"

另一種選擇是隻設置變量,如果它尚未設置(if(myVar)),但我個人更喜歡DESTDIR解決方案。

相關問題