8

CMake を使用して生成された Visual Studio 2012 C++ ソリューションがあり、単体テストに Google テストを使用しています。これはほとんど問題なく動作しますが、私のテストの 1 つで、ローカル ディレクトリから設定ファイルを読みたいと思っています。ファイルを見つけるために、ビルド後のステップとして、次の CMake コマンドを使用して、ソース コード ツリーからビルドおよびインストール ディレクトリにファイルをコピーします。

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。いくつかの可能な解決策を考えることができますが、これを達成する方法がわかりません:

  1. 「テスト エクスプローラー」の作業ディレクトリを設定します。
  2. 各テスト実行可能ファイルの作業ディレクトリを設定します
  3. すべての Google テストの作業ディレクトリを設定します
  4. CMake を使用して、ユーザーが指定した場所を指すいくつかの定義を設定し、それをテスト コードで使用します。(これはかなり醜い解決策だと思います)

プラットフォームに依存しないソリューションが必要です。(1)または(2)を達成する方法を知っている人はいますか、それともより良い解決策を知っていますか?

4

1 に答える 1