SHCライブラリに含まれるパス情報の除去について

こんにちは

 

ライブラリに含まれるソースコード/オブジェクトファイルのパスを除去する方法を探しています。

 

 

HEWにて、ユーザーライブラリ(*.lib)を作成していまして、

ライブラリ自体は生成出来、対象の実行プロジェクトにリンクして動作確認が出来ています。

 

ただ、

生成したライブラリファイルを、バイナリエディタで開いてみると、

ライブラリに含まれるオブジェクトファイル、及びそのソースコードのビルド時の絶対パスが含まれていました。

例)

 C:\Workspace\AAA\AAA\xxx.c

 

 C:\Workspace\AAA\AAA\Release\xxx.obj

 

これらの情報を除去したいと思い、

一通りビルドオプションを変えてみたつもりなのですが、消す事が出来ませんでした。

ご存知の方がいましたらご教授頂けないでしょうか?

 

※デバッグ情報出力はOFFにしているつもりです。

※リンクでstripを入れたところ、以下のエラーが出ました。

L1002 (W) Option "input" cannot be combined with option "strip,form=library"
L3002 (F) Option "form=library" is ineffective without option "library"

 

コンパイラオプション:

-cpu=sh3dsp -endian=little -object="$(CONFIGDIR)\$(FILELEAF).obj" -gbr=auto -chgincpath -errorpath -global_volatile=0 -opt_range=all -infinite_loop=0 -del_vacant_loop=0 -struct_alloc=1 -nologo

 

最適化リンカオプション:

-noprelink -form=library -nomessage -list="$(CONFIGDIR)\$(PROJECTNAME).lbp" -nologo -output="$(CONFIGDIR)\$(PROJECTNAME).lib" -exit

 

環境:

High-performance Embedded Workshop(Version 4.09.01.007)

C/C++ compiler package for SuperH RISC engine family V.9.04 Release 03 (7-10-2017 19:12:13)

SH3-DSP

  • わわいです
    lib にしようとしているソースの中に、マクロの __FILE __が入っています。
    ソースを検索して、そのマクロを除去しましょう
  • > lib にしようとしているソースの中に、マクロの __FILE __が入っています。

    ファイルサイズが 0バイトの空のソースプログラムをコンパイルしても、コンパイルした時点で生成される .obj ファイルに絶対パスでのソースファイル名とオブジェクトファイル名が含まれるので違うと思います。
  • わわいさん

    アドバイスありがとうございます。
    ご指摘のマクロは、ifdefでデバッグ時のみビルドされるようにしています。
    念の為、__LINE__マクロも含めてコメントアウトしての確認もしてみましたが、
    パスは消えませんでした。

    fujita nozomuさん

    ご確認ありがとうございます。
    こちらでも同じ確認をしてみましたが、ご指摘頂いた通りパスは消えませんでした。
  • 申し訳ないのですが、コンパイラやHEWにファイル名だけを入れるための機能がないため、パス情報を除去する方法はございません。
  • Aure さん

    ご回答ありがとうございます。
    パス情報の除去は出来ないという事ですね。。
  • プロジェクトのフォルダを仮装ドライブに割り当ててビルドを行えばいくらかの解決にはなるのでは?

    subst コマンドも最近の Windows では良く動作はしないみたいではありますが。

    http://news.mynavi.jp/column/win10tips/167/

  • fujita nozomu さん

    アドバイスありがとうございます。
    そうですね。余分なパスが出ないようにはしようと思います。
  • shneさん、こんにちは。NoMaYと申します。

    最近のWindowsであればシンボリックリンクコマンド(MKLINK)の方が動作が安定しているかと思います。(以前は管理者権限が無いと実行出来ませんでしたが、確かWindows10の最近の版では管理者権限が無くても実行出来るようになった、と何かで読んだ記憶があります。) (新たにドライブを作ることは出来ませんが、、、)

    ディレクトリだけでなくファイルのシンボリックリンクも作れます。なので、バージョン管理システム上は従来のソースファイル名のまま、シンボリックリンクで何をするのか分からないようなソースファイル名にして、HEW上では何をするのか分からないソースファイル名でライブラリファイルを作るといったことも出来るかと思います。(他方、ディレクトリのシンボリックリンクでは個人情報/企業情報/顧客情報/リビジョン情報とかがパス名としてうっかりライブラリファイルに入ってしまうのを防ぐことが出来ますね。) (その反面、手違いが起きる可能性も増えますが、、、)