blog2018-09-09CMakeでビルドした実行プログラムのあるディレクトリにリソースファイルをコピーする開発やりたいことCMakeを用いてプロジェクトを管理しているときに、ビルドした実行ファイルと同じディレクトリ(またはそこから相対的に定義されるディレクトリ)に画像データ等のリソースデータをコピーしたいという状況を考える。リソースファイルは、例えば次のように定義されているとする。https://cmake.org/cmake/help/latest/command/file.html#glob問題点ビルド環境ごとにビルドした実行プログラムが配置されるディレクトリは異なる可能性がある。Makefileを生成してmakeとした場合には${CMAKE_CURRENT_BINARY_DIR}に実行プログラムが配置されるが、Xcodeを用いてビルドすると、例えばDebugモードでビルドすると${CMAKE_CURRENT_BINARY_DIR}/Debugに配置される。macOSで.appバンドルを生成する場合は、実行ファイルの本体は[...].app/Contents/MacOSに配置される。${CMAKE_CURRENT_BINARY_DIR})としても、ビルド環境によっては意図通りにコピーされないことがある。Expressionを用いれば良い。configuration.と説明にあるように、ビルド環境に応じて評価される式ということらしい。expressionsを用いることで統一的に記述することができるようになる。expressionsのうち、特に$<TARGET_FILE_DIR:my-program>という式を用いると、ビルドした実行プログラムが配置されるディレクトリを得ることができる。my-programの部分にはそれぞれのターゲット名が入る。$<TARGET_FILE_DIR:my-program>)などと記述すれば良い。(1)月別アーカイブはてなブログをはじめよう!yuki-koyamaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。