我們最近開始使用純Visual Studio項目使用適當的CMake的文件切換。之前,我們將在解決方案根文件夾中包含「Content」文件夾,以允許我們的可執行文件使用諸如「../Tiles/tileset1.png」之類的相對路徑從其中訪問內容。如何將自定義內容添加到CMake項目?
我們如何才能確保CMake的複製文件正確,或者以其他方式確保我們的可執行文件都能夠找到的內容文件夾,而從Visual Studio無需手動設置工作目錄調試?
我們最近開始使用純Visual Studio項目使用適當的CMake的文件切換。之前,我們將在解決方案根文件夾中包含「Content」文件夾,以允許我們的可執行文件使用諸如「../Tiles/tileset1.png」之類的相對路徑從其中訪問內容。如何將自定義內容添加到CMake項目?
我們如何才能確保CMake的複製文件正確,或者以其他方式確保我們的可執行文件都能夠找到的內容文件夾,而從Visual Studio無需手動設置工作目錄調試?
我能想到的一些不同的選擇:
有CMake的把所有的可執行文件相同的文件夾,如this question描述。然後,您可以使用../Tiles
或../../Tiles
或其他任何方法。但是請注意,你可能要考慮在每個目標的基礎設置這個,而不是全球範圍內,例如,使用:
set_target_properties(
my_target
PROPERTIES
RUNTIME_OUTPUT_DIRECTORY
${CMAKE_BINARY_DIR}/bin
)
設置CMAKE_RUNTIME_OUTPUT_DIRECTORY
工作正常,但有些人認爲這是「舊」的方式做到這一點。 (根據您的需求,您可能還需要設置LIBRARY_OUTPUT_DIRECTORY
,並可能ARCHIVE_OUTPUT_DIRECTORY
。)
使用環境變量(例如,CONTENT_ROOT
或一些,這樣的)來查找資源。硬編碼對生產有意義的默認代碼,但讓開發人員可以爲其特定的工作流程覆蓋它。
實際上,1和2的組合可能是你最好的選擇...
經過進一步研究,似乎無論我會做不會有問題,因爲Visual Studio中仍然默認工作目錄到項目文件根目錄。我決定改爲將工作目錄改爲快速入門指南。標記爲答覆供其他人蔘考。 –
@LaylConway,如果你只是想設置Visual Studio的工作目錄,你可以嘗試瑞安帕夫利克的CMake的模塊,這個(見我的答案項#4只是增加])。我在前面看過這些,但對於我們的特殊使用情況來說似乎過分了。如果你決定試試,請在這裏再次評論,我想聽聽它是如何輕鬆/難以設置的。 – evadeflow