2012-10-12 48 views
1

對於客戶端,我試圖在Visual Studio 2010 IDE中重新創建基於命令行的構建工具。從包含我已經釘住的C/C++源文件的項目中編譯libs,鏈接命令行讓我感到悲傷,因爲如果libs以與命令行工具完全相同的順序給出,則可執行文件只能正確鏈接。使用Microsoft Visual Studio 2010 IDE進行精確的庫鏈接順序控制

的命令行是這樣的:

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編譯與此命令行掛鉤的.libs那麼.exe文件正確,但我不能讓IDE與正是這種鏈接.lib命令 - 它堅持按字母順序排序所有庫並鏈接。

任何想法的人? 避免誘惑走掉到這一切的意義老子哲學辯論,我不能改變基於命令行的構建工具

回答

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作爲特定鏈接程序輸入的順序都是所需的。

簡單,當你知道如何。