在此處閱讀其他問題我發現可以更改visual studio中的outdir宏。我真的搜索,但沒有找到/明白如何去做。CMAKE - 通過cmake更改outdir宏
這很簡單。我只想更改項目屬性 - >配置屬性 - >常規 - >輸出目錄。因爲我知道這將改變outdir宏。
我知道這是通過set_target_property使用某種cmake PROPERTY,但我真的沒有找到如何。
在此處閱讀其他問題我發現可以更改visual studio中的outdir宏。我真的搜索,但沒有找到/明白如何去做。CMAKE - 通過cmake更改outdir宏
這很簡單。我只想更改項目屬性 - >配置屬性 - >常規 - >輸出目錄。因爲我知道這將改變outdir宏。
我知道這是通過set_target_property使用某種cmake PROPERTY,但我真的沒有找到如何。
到底,什麼工作對我來說是把與調試前綴target_link_libraries和優化前綴點發布配置和relwithdebinfo配置的完整路徑釋放調試路徑和調試。我也摘下link_directories ...我不會,如果我不明白,但它對我有用!
如你所懷疑的那樣,這很簡單。您需要查看ARCHIVE_OUTPUT_DIRECTORY
,LIBRARY_OUTPUT_DIRECTORY
和RUNTIME_OUTPUT_DIRECTORY
目標屬性以修改outdir路徑。
這些都具有特定於配置的變體(例如ARCHIVE_OUTPUT_DIRECTORY_DEBUG
),並且都可以通過前綴爲CMAKE_
的同名全局CMake變量進行初始化。
因此,您可以
set_target_properties(MyExe PROPERTIES RUNTIME_OUTPUT_DIRECTORY <custom path>)
,或者影響到所有的目標,
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY <custom path>)
NB。從文檔:
多配置生成器(VS,Xcode)將每個配置的子目錄附加到指定的目錄。
下面是顯示此行爲的示例。它編寫自己的C++源代碼文件,所以你只需要將它複製到一個文件夾中,然後調用CMake,然後在Debug,Release,MinSizeRel和RelWithDebInfo中創建最終的解決方案。使用VS2012進行測試。不管構建類型如何,可執行文件總是以<build dir>/Exes/Debug
結尾,類似地,庫總是在<build dir>/Libs/Debug
中。
cmake_minimum_required(VERSION 2.8.11 FATAL_ERROR)
project(Example)
file(WRITE lib.hpp "void Print();\n")
file(WRITE lib.cpp "#include<iostream>\nvoid Print() { std::cout << \"Hello World\\n\"; }\n")
file(WRITE main.cpp "#include \"lib.hpp\"\nint main() { Print(); return 0; }\n")
set(ArchiveOutputDir ${CMAKE_BINARY_DIR}/Libs/Debug)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${ArchiveOutputDir})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL ${ArchiveOutputDir})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${ArchiveOutputDir})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${ArchiveOutputDir})
set(RuntimeOutputDir ${CMAKE_BINARY_DIR}/Exes/Debug)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${RuntimeOutputDir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL ${RuntimeOutputDir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${RuntimeOutputDir})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${RuntimeOutputDir})
add_library(MyLib lib.cpp lib.hpp)
add_executable(MyExe main.cpp)
target_link_libraries(MyExe MyLib)
我試過了。沒有工作,我會閱讀更多有關當時,但只是爲了確保。 我想要做的是改變設置爲Release或Debug的$(outdir)宏。它會在附加庫依賴關係中添加自動添加。例如,我希望將所有變爲始終調試,如果我真的在調試VS不調試VS –
您是否在* add_library或add_executable之前設置了'CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG'變量(或無論哪個)電話?這些默認的CMake變量用於在聲明它們的地方初始化本地目標屬性。爲了讓例如所有在同一個目錄中創建的庫,無論構建類型如何,只需將所有版本的'CMAKE_ARCHIVE_OUTPUT_DIRECTORY_'設置爲相同的值。 –
Fraser
經過很多天的嘗試,沒有工作。 我有這樣的: C:\目錄\ anotherDir \發行(發行版) 但我想這: C:\目錄\ anotherDir \調試(發行版) 在附加庫目錄 –