我試圖在cmake項目調用之前將自定義路徑(相當於VC14宏,即$(Intdir))傳遞給CMAKE_RUNTIME_OUTPUT_DIRECTORY。CMake將項目路徑作爲前綴添加到RUNTIME_OUTPUT_DIR
通過測試我注意到任何沒有'/'作爲CMAKE_RUNTIME_OUTPUT_DIRECTORY的第一個字符導致VC解決方案將自定義路徑附加到項目源dir - 如果'/'是第一個字符,則該前綴不是自動的 - 生成。我如何使用宏提供自定義路徑?
我試圖在cmake項目調用之前將自定義路徑(相當於VC14宏,即$(Intdir))傳遞給CMAKE_RUNTIME_OUTPUT_DIRECTORY。CMake將項目路徑作爲前綴添加到RUNTIME_OUTPUT_DIR
通過測試我注意到任何沒有'/'作爲CMAKE_RUNTIME_OUTPUT_DIRECTORY的第一個字符導致VC解決方案將自定義路徑附加到項目源dir - 如果'/'是第一個字符,則該前綴不是自動的 - 生成。我如何使用宏提供自定義路徑?
這些東西直接編碼到CMake的Visual Studio生成器中。 CMake確實使用絕對路徑,並且如果給出相對路徑,它確實將其擴展到絕對路徑。另請參閱CMake FAQ: Why does CMake use full paths, or can I copy my build tree?
因此,CMake無法識別VS宏,因爲生成的解決方案無論如何都不可重定位 - 通常不需要它們。
您可以使用generator expressions中的CMAKE_RUNTIME_OUTPUT_DIRECTORY
來解決多配置問題。例如。我已經測試通過CMake 3.5.2以下幾點:
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "$<CONFIG>")
對於老版本的CMake,你將不得不使用CMAKE_RUNTIME_OUTPUT_DIRECTORY_<CONFIG>
像
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "Debug")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "Release")
請舉例說明什麼問題,你想什麼確切地說 – Antonio