プログラムの出力をプラットフォームでチェックすることは可能ですか?CMakeのプログラム出力を確認する
#include <library.h>
#include <iostream>
int main() {
std::cout << LIBRARY_MAGIC_VALUE << std::endl;
return 0;
}
をしてLIBRARY_MAGIC_VALUE
の値を抽出するために(CMakeの中にステップを設定します)、それを実行します。
のは、私はこのプログラムをコンパイルしたいとしましょう。
How to write platform checksガイドでは、このユースケースは考慮されていないか、または特定のもの(型のサイズのチェックなど)にのみ特化されているようです。
どうすればこのようなチェックを実装できますか?
CMake 3.0は "execute_process"を持っていますが、非推奨バージョンは "exec_program"と思います。 coutを実行する代わりに、LIBRARY_MAGIC_VALUEを返し、 "execute_process"に戻り変数を設定し、その値を使ってチェックを行うことができます。 –
execute_processはプログラムの作成をカバーしていませんか?プログラムをターゲットとして追加すると、configureステップでそのプログラムが必要であることをどのように指定するのですか? – fferri
正解です。後で実行する値を決定するためにセカンダリプログラムを実行するようなものです。依存関係として追加することができます。そのため、まずVersionCheckerを起動してからAppUsingVersionCheckerを起動し、それぞれに独自のCMakeList.txtを付けます。 –