2011-10-10 43 views
1

這個我可能是trival,但我還沒有弄明白。我在與源代碼相同的目錄中有一個.ini文件,我希望cmake將inifile.ini複製到生成.exe文件的目錄中。這個dirctory可能會有所不同,這取決於我是否執行發佈或調試構建,以及是否執行內部源代碼或源代碼構建。我已經走到這一步:如何將文件複製到與.exe文件相同的目錄

configure_file(${myapp_SOURCE_DIR}/src/myinifile.ini 
       ${myapp_BINARY_DIR}/bin/${????}/myinifile.ini COPYONLY) 

但我需要包括在根據生成類型的目標路徑斌/調試或斌/釋放。是否有一個cmake變量,我可以使用它指向生成.exe的實際目錄。或者什麼是最好的方式來做到這一點。

回答

2

您可以獲得LOCATION屬性以查找目標的輸出路徑。接下來,您可以在add_custom_command使用它的值:

get_target_property(exepath target_name LOCATION) 
get_filename_component(outputpath "${exepath}" PATH) 
add_custom_command(TARGET target_name POST_BUILD 
    COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${myapp_SOURCE_DIR}/src/myinifile.ini" "${outputpath}") 

該代碼會自動處理建立類型依賴。

+0

無法從target_name獲取LOCATION屬性,它爲空。我用add_executable(target_name WIN32 $ {SRCS})定義目標 – lgwest

+0

@lgwest我發佈的代碼完全適合我。你在哪裏放置這些代碼?它應該在'add_executable'命令之後。 –

+0

好吧,它似乎是正確的,它得到一個小的測試用例,但不是在我的真實項目上工作,但這必定是另一個錯誤。 – lgwest

相關問題