問題タブ [cmake-custom-command]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cmake - cmake add_custom_command
add_custom_commandに苦労しています。問題を詳しく説明させてください。
私はこれらのcxxファイルとhxxファイルのセットを持っています。それぞれに対してperlスクリプトを実行して、特定の種類の翻訳ファイルを生成します。コマンドは次のようになります
同様に、header.hxxファイルについても同様です。
だから私はいくつかの複数のコマンド(それぞれがファイルに対して)で終わるでしょう
次に、これらのコマンド(source_cxx_tro、header_hxx_tro)から生成された出力に対して別のperlスクリプトを実行します。
dir.trxは出力ファイルです。
私はこのようなものを持っています。
私が期待しているのは、ビルド後のターゲットをビルドするときに、trofilesが最初にビルドされることです。しかし、そうではありません。$ {trofiles}がビルドされていないため、ビルド後のコマンドが失敗して終了します。POST_BUILDコマンドが前のカスタムコマンドに依存していることを確認する方法はありますか?
助言がありますか ?
よろしくお願いします、スーリヤ
cmake - CMakeadd_custom_commandが実行されていません
ビルド中にadd_custom_commandを使用してファイルを生成しようとしています。コマンドが実行されていないようだったので、このテストファイルを作成しました。
実行してみました:
また、hello.txtは生成されませんでした。私は何を間違えましたか?
cmake - xml ファイルの add_custom_command
私たちのシステムは、いくつかの xml ファイルを使用してコードを生成します。そこで、これらのファイルをスキャンして解析し、必要に応じて生成するカスタム コマンドを作成しました。これは私がしたことです:
問題は、フォルダー内のいくつかの xml を変更した場合でも、cmake を実行したときにのみ add_custom_command が実行されることです。
ファイルに変更が加えられたときにこれを実行するにはどうすればよいですか?
cmake - 異なるディレクトリにあるカスタム コマンド間の依存関係の定義
あるカスタム コマンドの出力が別のカスタム コマンドの入力として使用されるプロジェクトがありますが、別のディレクトリにあります。たとえば、次のようになります。
ディレクトリlib/CMakeLists.txt
には以下が含まれます:
ディレクトリtest/CMakeLists.txt
には以下が含まれます:
したがって、libfoo が test.yy の前にビルドされるようにする必要があります。ドキュメントによると、 add_custom_command() の DEPENDS 句はファイルレベルの依存関係しか持てません。それを試して、何が起こるか見てみましょう:
一方、 と言ってターゲット レベルの依存関係を作成しようとするとDEPENDS libfoo
、エラーは次のように変わります。
したがって、ファイルレベルまたはターゲットレベルの依存関係はここでは機能しないようです。あるカスタム コマンドからの出力を、別のディレクトリにある別のカスタム コマンドへの入力にする方法はありますか?
cmake - cmake add_custom_command は古くなっています
add_custom_command は常に古くなっているため、すべてのビルドで実行されるという問題があります。カスタム コマンドは、同じプロジェクトのターゲットであるツールを実行して、別のターゲットで使用されるファイルを生成します。
ビルド出力 (visual studio 2010) には常に ** GeneratorTool ** が表示されます。generated.h が存在し、main.cpp よりも新しくなると、再度ビルドされないことが予想されます。何か案は?
ありがとう、ヨッヘン
cmake - CMakeの条件付きadd_custom_command
マクロを使用して、cmakeプロジェクトのプリコンパイル済みヘッダーを作成しています。gccの場合、このマクロはadd_custom_commandを使用して* .h.gchファイルを作成します。このファイルは、add_executable/add_libraryを使用して他のソースファイルと一緒にターゲットに追加できます。問題は、一部のライブラリが静的ライブラリと動的ライブラリの両方として構築されているため、同じ*.h.gchファイルが2つの異なるターゲットに使用される場合があることです。
MSVC / Xcodeの場合、PCHの使用/コンパイルを有効にするためにターゲットのプロパティを調整する必要があるため、各add_library呼び出しの後にマクロを呼び出す必要があります。ただし、gccの場合、ビルドルール(.gch)が既に含まれている出力でadd_custom_commandを使用しようとすると、エラーが発生します。現在、名前に「Static」が含まれているターゲットのadd_custom_commandをスキップすることで、このエラーを回避しています。これは、プロジェクト内のすべての静的ライブラリに「Static」の接尾辞があるために機能しますが、明らかにあまり洗練されたソリューションではありません。 。
ターゲットにすでにビルドルールがあるかどうかをcmakeに確認する方法はありますか、あるいは、エラーを発生させずにadd_custom_commandをサイレントに失敗させる方法はありますか?または、問題を完全に回避できるようにデザインを変更する方法はありますか?1つの「解決策」は、各CMakeListに条件付きチェックを追加することだと思いますが、実際にはそうしたくありません。
これは私が現在使用しているコードです:
マクロ:
...次に、CMakeListsで、次のようになります。
ご協力いただきありがとうございます!これが重複している場合は申し訳ありません。add_custom_commandにはすでにいくつかの質問がありますが、どれも私が求めているものに完全に対応しているようには見えません。
cmake - CMake: add_custom_command への依存関係を動的に追加します
多くのサブプロジェクトを含む CMake プロジェクトがあります。それらはそれぞれ、私が提供する関数を使用して、(add_custom_command を呼び出して) 特定の情報を含む小さなテキスト ファイルを生成できます。最後のステップで、これらすべてのファイルを 1 つの大きなテキスト ファイルに結合したいと思います。
作成されたファイルを (すべて 1 か所で) 検索してマージするカスタム コマンドを作成しました。
問題は、提供されるファイルの数が実際にはわからないのに、この最終ステップをサブプロジェクトで行われるすべての小さなステップに依存させたいということです。
私の最終的なコマンドは次のようになります。
私の create-small-text-file-for-each-subproject コマンドは次のようになります。
そして、これらの小さなファイルを作成するときに、「combination.txt」を /path/${sub_project_name}.txt に依存させるようなことをしたいと思います
だから私はできればいいのに:
ただし、これはターゲットに対してのみ機能します。
また、OBJECT_DEPENDS で set_source_files_properties を使用しようとしましたが、動作しないようです (おそらく、add_target の cpp ファイルで使用するつもりですか?)
私が見る最後の方法は、キャッシュ変数を使用して、これらの小さなファイルパスをすべて蓄積し、次のように使用することです。
しかし、これは私がやりたい最後のことです。