可以使用「/ Save」和「/ Load」選項分別存儲和加載靜態庫的源信息。使用這些選項可以爲您的圖書館存儲信息,然後在索引與圖書館鏈接的項目時將其導入。
爲索引庫解決方案建立索引時,需要在存儲索引信息的目錄中指定「/ Save」標誌,以存儲有關該庫源文件的索引信息。例如(假設你使用Subversion進行源代碼控制),
ssindex.cmd /System=SVN /Save=c:\source\libproj\srcinfo /Source=c:\source\libproj /Symbols=c:\source\libproj\Release\*.pdb
當後來索引你的項目,包括你的圖書館,你與包含庫的源文件信息的目錄指定「/加載」標誌。例如,
ssindex.cmd /System=SVN /Load=c:\source\libproj\srcinfo /Source=c:\source\binproj /Symbols=c:\source\binproj\Release\*.pdb
有兩個潛在問題可能會影響您使用此技術的能力。首先,一些源代碼管理提供者似乎不支持保存和加載源代碼控制信息。我知道Subversion提供程序的確如此,它看起來像SourceSafe提供程序,但我沒有檢查任何其他人。
其次,這種技術似乎只適用於一個外部靜態庫的開箱即用。似乎沒有辦法從多個目錄加載信息,並且每次使用「/ Save」選項時,腳本當前都會覆蓋目錄的內容。您可以編輯源控制提供程序模塊以追加到保存目錄中的文件而不是覆蓋它們,但我沒有嘗試過。
另外,請注意,如上所述,如果您的庫是作爲單獨解決方案的一部分構建的,則只需執行此操作。如果靜態庫是您正在建立索引的解決方案的一部分,則其源文件將包含在「/ Source」選項指定的路徑中。
在我的情況下路徑名稱問題不是問題。我使用msdn中的dia2dump工具發現了以下內容: 對於二進制項目(EXE或DLL)的PDB,dia2dump的輸出包含標有「Found table:SourceFiles」部分的源文件列表 。使用爲靜態庫項目生成的PDB文件, 相應的部分總是顯示爲空。 所以我想這就是爲什麼「ssindex」不適用於靜態庫項目的原因。但我不知道 爲什麼這些信息沒有包含在PDB中,並且沒有找到任何「治癒」這個的編譯器設置。 – 2009-10-12 12:58:50