我有一個使用CMake生成的Visual Studio 2012 C++解決方案,其中我使用谷歌測試進行單元測試。這工作大多好,但在我的一個測試中,我想從本地目錄讀取設置文件。要找到我的文件複製從我的源代碼樹中的後生成步驟生成的文件,並使用以下CMake的安裝目錄命令:Visual Studio中谷歌測試的工作目錄
install(FILES ./adapters/settingFile.txt DESTINATION .)
add_custom_command(TARGET testAdapters POST_BUILD
COMMAND "${CMAKE_COMMAND}" -E copy
"${CMAKE_CURRENT_SOURCE_DIR}/adapters/settingFile.txt"
"${CMAKE_CURRENT_BINARY_DIR}"
COMMENT "Copying elastix parameter files")
也能正常工作:建立我的測試後settingFile.txt是與testAdapters.exe位於同一位置。右鍵單擊testAdapters項目並啓動調試會話也可以查找。
但是,如果我選擇從「測試資源管理器」窗口內運行測試,可以通過「全部運行」或右鍵單擊測試並選擇「運行選定的測試」,測試無法找到settingsFile.txt。通過右鍵單擊並選擇「調試選定的測試」,我發現從「測試瀏覽器」運行測試的工作目錄默認爲visual studio程序目錄:C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
。我能想到的幾種可能的解決方案,但不知道如何實現這一點:
- 設置「測試資源管理器」的工作目錄
- 設置每個測試可執行
- 工作目錄設置所有谷歌測試的工作目錄
- 使用CMake設置一些定義,指向用戶指定的位置並在測試代碼中使用它。 (我認爲這是一個相當難看的解決方案)
我需要一個獨立於平臺的解決方案。有人知道如何實現(1)或(2)或者你知道更好的解決方案嗎?