質問: cmakeのexternalproject_addでビルドプロセスを構成します 制御できない別のプロジェクト(サブプロジェクト)に依存するc++プロジェクト(スーパープロジェクト)があります。プロジェクトをビルドできるようにするには、最初にサブプロジェクトをビルドし、次にサブプロジェクトでビルドされたライブラリにリンクするスーパープロジェクトをビルドする必要があります。どちらのプロジェクトもcmakeを使用して、対応するmakefileを構成します。手動で、サブプロジェクトをスーパープロジェクトのサブフォルダー(externals/subproject)にダウンロードしてから、cdをexternals/subproject/buildにダウンロードし、cmake ..、次にmake target1を実行する必要があります。externalproject_add機能を使用して、superprojectcmakelistsファイル内からこのプロセスを自動化したいと思います。これまでのところ私はexternalproject_add(subproject download_dir "${cmake_current_source_dir}/externals" git_repository "git@path/to/repo/subproject.git" git_tag "master" source_dir "${cmake_current_source_dir}/build" ) これは、サブプロジェクトのallターゲットを正しくダウンロードしてビルドします。しかし、サブプロジェクトのtarget1のみをビルドするように変更しようとするとexternalproject_add(subproject download_dir "${cmake_current_source_dir}/externals" git_repository "git@path/to/repo/subproject.git" git_tag "master" source_dir "${cmake_current_source_dir}/build" build_command "${make} target1" ) makeコマンドの実行に失敗し、/bin/shがtarget1が何であるかを知らないと文句を言います。必要に応じて、コンパイルターゲットをexternalproject_addから変更するにはどうすればよいですか?
回答: 最後に、build_commandステートメント内の引用符を削除し、中括弧をmakeディレクティブの前後の括弧に変更してから、install_commandを無効にすることで、なんとか解決しました。externalproject_add(subproject download_dir "${cmake_current_source_dir}/externals" git_repository "git@path/to/repo/subproject.git" git_tag "master" source_dir "${cmake_current_source_dir}/build" build_command $(make) target1 install_command "")