自動で特定のファイルだけ最適化を無効にしてビルドする方法

環境はCS+ for CC V8.03.00、CC-RXコンパイラV3.02.00です。

手動でならば個別コンパイル・オプションを変更して特定のファイルだけ最適化レベル0に設定後ビルドすれば表題の目的は達成できるのですが、それを自動で行う手法はありますでしょうか?

できればpythonコンソールを使う方向ですと助かります。

Parents
  • 自動と言うのは、Pythonだけで、 特定のファイルに対して個別コンパイルオプションをONにして最適化レベルを0にする、というイメージでしょうか?
  • その通りです。
    最終的には、テストをする際にデバッグツールで特定のファイルをアセンブラで見たときに最適化されていない処理内容としたいです。
    本来は全ファイルを一気に最適化無効にすれば良いのですが、こちらのプログラムではセクションアドレスが溢れてしまうエラーでビルドができなかったので個別で無効にするという方法をとっています。
    諸事情で個別に無効にする動作を手動ではなくpythonコンソールなどを利用して自動で行いたく、模索している状況です。
    宜しくお願い致します。
  • フォルダ名で空白があるものは""でくくっています。

    先ほど一部間違えており
    -output=obj -obj_path=FOLDER1\main.obj -Xcref=FOLDER1\main.cref
    でした。
    またエラーもE0511104の前に
    E0511134:Input file "SRC\COMMON\main.c" is not found.
    というエラーが出ていました。

    CS+でmakefileを作るということをやったことが無く調べても公式ではサポートされていない手法しかないのですが、そういった手法のことを指していますでしょうか?
  • make の件は、PowerUser さんの「プロジェクトA,Bを振り分けて・・・」に対する一案で、Linuxなどでmakeを使った事のある人向けです。
    make はCS+とは全く関係なく、「CS+上ではビルドを行わない」「コマンドで一つずつコンパイル~リンクする代りにmakeを使う」とのアイデアです。
  • 一応自分も一通りのOSや言語は使ったことがあるのですがまだまだ初心者で深いことまでは理解できておらず、もしかしたら間違えているかもしれませんが、CS+で行われているビルドをmakeで再現する際にどうやってmakefileを用意するかというところが重要になってくる気がします。
    逆にmakefileさえ作れればCS+でビルドするのと同じ結果が得られるという理解で合っていますでしょうか?

    ちなみに最初のアドバイスのほうですが、コマンドを実行する階層を間違えていたようで、修正したらコマンドは通りました。
    一応これで特定のファイルだけ最適化レベル0でコンパイルした状態でリンクを実行させることができたので、デバッグツールで最適化されていないアセンブラを確認することができました。
    makeする手法がうまくいかなかった場合は、「コンパイル後に実行するコマンド」に事前に.batファイルを指定しておき、ビルド前にpythonでコマンドを生成して.batとして出力し、ビルドを実行するという手法となりそうです。
  • すみません、そこまで詳しくないため断言できませんが、makefile が適切であれば、大丈夫だと思います。
    CS+のビルドで使っているプログラムも、元をたどれば「ccrx.exe」や「rlink.exe」等ですので。

    ※ make は、「make が好き」「makefile なら慣れている」と行った方々向けで、それ以外の方にはお勧めしません。
  • いえいえ、大変参考になります。

    自分もmakefileの中身を一から記述した経験はほとんどなく、makeを使う手法は敷居が高いかもしれません、、、
  • pythonでbatファイルを作らせるのではなく、batファイルをプロジェクトに追加して、CS+上で編集させる方法はいかがでしょうか?
    CS+だけで管理ができるので、その方がメリットが大きいと思います。
  • CS+上で編集させるというと、使用者に手動で編集させるということでしょうか?
    それですと自動化ではなくなってしまうので、導入は厳しいです。
  • makeはそれなりに知識が無いと難しいですね。最悪makefileのデバッグという本筋でないところでハマります。
  • batファイル自身は「コンパイル後に実行するコマンド」に登録しているので、自動でビルドされます。

    最適化レベルを0にしたいファイルが固定であれば、batファイルの編集は不必要なので、本方法も有効かと。
    ただ、対象となるファイルが毎回異なる場合は、仰るとおり厳しいと思います。
  • そうですね、、今回は対象のファイルが毎回変わるので、やはりpythonでbatを生成してあげる手法しかなさそうです。

    お二方、貴重なアドバイスありがとうございました。大変参考になり、一応解決の糸口も見えました。
    もし、また何か良い手法が思い浮かびましたら、お待ちしております。
Reply
  • そうですね、、今回は対象のファイルが毎回変わるので、やはりpythonでbatを生成してあげる手法しかなさそうです。

    お二方、貴重なアドバイスありがとうございました。大変参考になり、一応解決の糸口も見えました。
    もし、また何か良い手法が思い浮かびましたら、お待ちしております。
Children
No Data