2012-09-20 62 views
0

現在我正在使用CMake創建一個VC 10項目。我發現的一個問題是輸出庫或執行程序的路徑與項目配置(調試或發佈)相關聯。爲了說明它,我給下面的例子:如何設置CMAKE_INTDIR或CMAKE_CFG_INTDIR以刪除項目配置?

cmake_minimum_required(VERSION 2.6) 
    project (test) 
    add_definitions (-DEXP_STL) 
    add_library(lib1 SHARED lib1.cxx) 
    set_target_properties(lib1 PROPERTIES LINK_INTERFACE_LIBRARIES "") 
    set(LIBRARY_OUTPUT_PATH ${test_SOURCE_DIR}) 

腳本中的最後一個命令表示,我想將輸出庫(lib1)在${test_SOURCE_DIR}目錄。但是,輸出庫位於${test_SOURCE_DIR}/Debug中。我想知道如何確保輸出庫完全在我設定的路徑中。謝謝!

BWT:我之所以提出這個問題,是因爲在Linux開發環境中,輸出庫或執行程序路徑正是您用set(LIBRARY_OUTPUT_PATH ...)函數設置的路徑。我想有一個一致的結果。

回答

1

這個問題被認爲是重複的,和一個可能的解決方案如下:

if (WIN32) 
    set(myoutputdirectory ${your_source_file_SOURCE_DIR}/output/win/32) 
elseif (CMAKE_COMPILER_IS_GNUCC) 
    set(myoutputdirectory ${your_source_file_SOURCE_DIR}/output/linux/32) 
elseif(APPLE) 
    set(myoutputdirectory ${your_source_file_SOURCE_DIR}/output/mac/32) 
endif (WIN32) 
# set output parth 
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${myoutputdirectory}) 
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${myoutputdirectory}) 
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${myoutputdirectory}) 
# for multi-config builds (e.g. msvc) 
foreach(OUTPUTCONFIG ${CMAKE_CONFIGURATION_TYPES}) 
    string(TOUPPER ${OUTPUTCONFIG} OUTPUTCONFIG) 
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${myoutputdirectory}) 
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${myoutputdirectory}) 
    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${OUTPUTCONFIG} ${myoutputdirectory}) 
endforeach(OUTPUTCONFIG CMAKE_CONFIGURATION_TYPES) 
相關問題