1

クライアントの場合、Visual Studio 2010 IDE でコマンド ライン ベースのビルド ツールを再作成しようとしています。私が釘付けにしたC / C ++ソースファイルを含むプロジェクトからのライブラリのコンパイルは、ライブラリがコマンドラインツールとまったく同じ順序で指定された場合にのみ実行可能ファイルが正しくリンクされるため、リンクコマンドラインは私に悲しみを与えています。

コマンドラインは次のようなものです。

link.exe -subsystem:console -machine:I386 -verbose:lib 
-nodefaultlib:libc.lib -nodefaultlib:libcd.lib -nodefaultlib:libcmt.lib -nodefaultlib:libcmtd.lib 
-DEBUG 
-out:myout.exe 
-pdb:myout.pdb 
-libpath:../../path/to/libs
libcmtd.lib kernel32.lib user32.lib ws2_32.lib netapi32.lib comctl32.lib gdi32.lib comdlg32.lib advapi32.lib winmm.lib imagehlp.lib shell32.lib  
x_mylib.lib a_mylib.lib y_mylib3.lib z_my.lib  etc....

IDE がコンパイルする .lib がこのコマンド ラインでリンクされている場合、.exe は正しいのですが、この .lib の順序で正確に IDE をリンクさせることはできません。すべてのライブラリをアルファベット順に並べ替えてリンクする必要があります。

アイデアはありますか? このすべての意味についての哲学的な議論に迷い込む誘惑を避けるために、コマンド ライン ベースのビルド ツールを変更することはできません。

4

1 に答える 1

0

だから、そのような答えをいじった後...

上記のように、対応する静的ライブラリにリンクするソリューション内のプロジェクトがあります。

a_mylib.vcxproj b_mylib.vcxproj ... x_mylib.vcxproj y_mylib.vcxproj z_mylib.vcxproj

my_libs.vcxprojソース ファイルを持たないが、依存関係として上記のすべてを含む別のスタティック ライブラリ プロジェクトを追加すると、ソース コード全体を簡単にビルドできます。最後にmy_exe.vcxproj、依存関係として my_libs のみを含み、必要な順序で特定のリンカー入力としてすべての ?_mylib.libs を含む実行可能ファイルが追加されます。

方法がわかれば簡単。

于 2012-10-18T07:19:37.157 に答える