CSplusのmtpjファイル/rcpeファイルとCMakeのCMakeLists.txtやtoolchain fileの相互変換を考えてみるスレッド

こんにちは。NoMaYです。

少し作っては作り直し、の繰り返し、になってしまうのでしょうけれども、1つ立ててみました。

どういう方法がありそうか、というと、咄嗟には以下の通りかな、と思いました。

・ CS+で開いたmtpjファイルの設定をもとにPythonコンソールのスクリプトでCMakeLists.txt/toolchain fileを出力する
・ rcpeファイルをPythonコンソールスクリプトもしくはPython3スクリプトで読み込んでCMakeLists.txt/toolchain fileを出力する
・ rcpeファイルをCMakeスクリプトで読み込んでCMakeLists.txt/toolchain fileを出力する

・ CS+でmtpjファイルを開いた後でPythonコンソールのスクリプトでCMakeLists.txt/toolchain fileを読み込んでプロジェクト設定を更新する

・ CMakeのconfigure時にCMakeLists.txtでrcpeファイルを読み込む(ソースの追加/削除やインクルードパスの追加/削除はCMakeLists.txt単独でもCMakeスクリプトで自動的に対処可能)

Parents
  • こんにちは。NoMaYです。

    既にVSCodeとCS+を併用しているのであれば、VSCodeからコマンドライン版CS+の引数にmtpjファイルを指定してビルドしているケースもあると思います。その場合、変換、という話は無いのですけれども記憶では以下の難点があったと思います。

    難点

    ・ コマンドライン版CS+の引数にmtpjファイルを指定してビルドする場合にはビルドが始まるまでに結構長い時間が掛かる

    理由(ただし推測もあります)

    ・ CS+のプラグインを読み込むのに時間が掛かる(特にIronPythonプラグインの読み込みに掛かる時間が長かったという記憶がある)
    ⇒ なお、これに関しては、コマンドライン版CS+のオプションで読み込むプラグインを削減出来るようになっている

    ・ ソースファイルの依存関係をチェックする必要がある
    ⇒ Makeとは異なり、CS+では、コンパイラが生成した依存関係ファイルを残していない
    ⇒⇒ なので、コマンドライン版CS+の起動毎に、コンパイラに依存関係ファイルを生成させている(そして、その都度、削除している)

    他方で、CMakeではNinjaというオープンソースのビルドシステム(Makeのようなもの)を使えるようになっていて、Ninjaには実装上の特徴として以下のことがあります。(ただし勘違いしていたらすみません。)

    ・ コンパイラが生成した依存関係ファイルをビルド毎にバイナリファイル化して残すようになっている
    ・ なので、ビルドが始まる時には、バイナリファイルを読み込んで、各ファイルのタイムスタンプをチェックして、すぐにビルドが始まる

    ・ ちなみに、MakeとNinjaで(一旦ビルドした後のビルドで)どれぐらいビルドが始まるまでの時間が違うのか確認したことは無いです
     (私の日常での巨大プロジェクトのビルドは、何も無いところからのビルド、もしくはクリーン後ビルド、ばかりなので。)


    ちょっと無理矢理ですけれども、別の視点ということで言えば、変換の片側は以下を企んでいる、ことだったりもします。

    ・ CSplusのmtpjファイル/rcpeファイル → CMakeのCMakeLists.txtやtoolchain file → Ninjaのビルド設定ファイル/依存関係バイナリファイル

Reply
  • こんにちは。NoMaYです。

    既にVSCodeとCS+を併用しているのであれば、VSCodeからコマンドライン版CS+の引数にmtpjファイルを指定してビルドしているケースもあると思います。その場合、変換、という話は無いのですけれども記憶では以下の難点があったと思います。

    難点

    ・ コマンドライン版CS+の引数にmtpjファイルを指定してビルドする場合にはビルドが始まるまでに結構長い時間が掛かる

    理由(ただし推測もあります)

    ・ CS+のプラグインを読み込むのに時間が掛かる(特にIronPythonプラグインの読み込みに掛かる時間が長かったという記憶がある)
    ⇒ なお、これに関しては、コマンドライン版CS+のオプションで読み込むプラグインを削減出来るようになっている

    ・ ソースファイルの依存関係をチェックする必要がある
    ⇒ Makeとは異なり、CS+では、コンパイラが生成した依存関係ファイルを残していない
    ⇒⇒ なので、コマンドライン版CS+の起動毎に、コンパイラに依存関係ファイルを生成させている(そして、その都度、削除している)

    他方で、CMakeではNinjaというオープンソースのビルドシステム(Makeのようなもの)を使えるようになっていて、Ninjaには実装上の特徴として以下のことがあります。(ただし勘違いしていたらすみません。)

    ・ コンパイラが生成した依存関係ファイルをビルド毎にバイナリファイル化して残すようになっている
    ・ なので、ビルドが始まる時には、バイナリファイルを読み込んで、各ファイルのタイムスタンプをチェックして、すぐにビルドが始まる

    ・ ちなみに、MakeとNinjaで(一旦ビルドした後のビルドで)どれぐらいビルドが始まるまでの時間が違うのか確認したことは無いです
     (私の日常での巨大プロジェクトのビルドは、何も無いところからのビルド、もしくはクリーン後ビルド、ばかりなので。)


    ちょっと無理矢理ですけれども、別の視点ということで言えば、変換の片側は以下を企んでいる、ことだったりもします。

    ・ CSplusのmtpjファイル/rcpeファイル → CMakeのCMakeLists.txtやtoolchain file → Ninjaのビルド設定ファイル/依存関係バイナリファイル

Children
No Data