2008-11-14 43 views
4

我正在使用命令行編譯器進行構建。我看到的一個問題是,那裏提到的路徑似乎需要是文件名的簡短版本,以便它們不包含任何空格。儘管我已經使用了一段時間,但對此我並不瞭解。delphi 2007命令行編譯器dcc32.cfg問題

我最近升級到d2009,然後問題就出現了。

有沒有縮短路徑的方法?

我應該說我不急於改變使用MS構建工具在這個時候。我只是想建立我的應用程序的舊副本&找回其他工作。

這裏是在dcc32.cfg文件用於-I-U-O-R參數路徑:

$(BDS)\LIB;$(BDS)\Imports;$(BDS)\Lib\Indy10;C:\PROGRA~1\Borland\BDS\4.0\RAVERE~1\Lib;c:\prj\lib\lib2002;C:\DOCUME~1\ALLUSE~1\DOCUME~1\RADSTU~1\5.0\Bpl;c:\DOCUME~1\mike\MYDOCU~1\BORLAN~1\bpl;C:\Prj\Lib\LOCKBO~1\source;C:\Prj\Lib\MyComp;C:\Prj\Lib\ABBREV~1\source;C:\Prj\Lib\ZLib;C:\Prj\Lib\MinMod;C:\Prj\Lib\HELPMA~1;C:\Prj\Lib\DXGETT~1;c:\windows\system32;c:\prj\lib\xpburn;C:\Prj\Lib\WININE~1;C:\Prj\Lib\regexpr\Source;C:\Prj\Lib\VCARDR~1;C:\PROGRA~1\Raize\RC4\Lib\BDS2006;C:\Prj\Lib\jcl\lib\d10;C:\Prj\Lib\jcl\source;C:\Prj\Lib\jvcl\lib\D10;C:\Prj\Lib\jvcl\common;C:\Prj\Lib\jvcl\RESOUR~1;C:\Prj\Lib\ProE6\Delphi;C:\Prj\Lib\FastMM4;C:\Prj\Lib\OPENOF~1;C:\Prj\Lib\DEVELO~1\Library\Delphi11;C:\Prj\Lib\DEVELO~1\EX38D9~1\Sources;C:\Prj\Lib\DEVELO~1\EXBD88~1\Sources;C:\Prj\Lib\DEVELO~1\XPTHEM~1\Sources;C:\Prj\Lib\DEVELO~1\EX2EBC~1\Sources;C:\Prj\Lib\DEVELO~1\EXC5FB~1\Sources;C:\Prj\Lib\DEVELO~1\EX7C7C~1\Sources;C:\Prj\Lib\DEVELO~1\EXPRES~3\Sources;C:\Prj\Lib\DEVELO~1\EXPRES~4\Sources;C:\Prj\Lib\DEVELO~1\EXC73B~1\Sources;C:\Prj\Lib\DEVELO~1\EX7165~1\Sources;C:\Prj\Lib\DEVELO~1\EXPRES~2\Sources;C:\Prj\Lib\DEVELO~1\EXPRES~1\Sources;C:\Prj\Lib\DEVELO~1\EX749C~1\Sources;C:\Prj\Lib\DEVELO~1\EX0A1A~1\Sources;C:\Prj\Lib\Mad\madBasic\BDS4;C:\Prj\Lib\Mad\MADDIS~1\BDS4;C:\Prj\Lib\Mad\MADEXC~1\BDS4;C:\Prj\Lib\Mad\MADKER~1\BDS4;C:\Prj\Lib\Mad\MADSEC~1\BDS4;C:\Prj\Lib\Mad\madShell\BDS4;C:\Prj\Lib\Mad\madShell\DeXter;C:\Prj\Lib\Mad\madExcept\..\Plugins; 

我已經從IDE的路徑複製它就像我的路徑所做的和使用程序來縮短路徑名稱。

雖然在這條道路沒有空格,它仍然無法找到Indy的IdCoder.dcuC:\Program Files\CodeGear\RAD Studio\5.0\lib\Indy10

按照D2007環境變量,$(BDS)將明顯擴大到c:\program files\codegear\rad studio\5.0

的IDE正在考慮這個庫路徑有效。

這是怎麼發生的?我敢打賭這是一個我沒有想到的簡單的錯誤!

謝謝你的幫助!

+0

請向我們展示完整的-U部分dcc32.cfg。 – gabr 2008-11-15 09:00:44

回答

3

您可以嘗試將路徑放在引號中,這是在Windows中用空格處理路徑/文件名的標準方式,但我從來沒有在Delphi DCU中嘗試過。

所以,與其

$(BDS)\Lib\Indy10 

嘗試

"$(BDS)\Lib\Indy10" 

您也可以嘗試

"C:\Program Files\CodeGear\RAD Studio\5.0\lib\Indy10" 

檢查,如果環境變量是正確的。

+0

謝謝,但它不能解決問題。 – 2008-11-14 23:35:35

+0

也許你必須把整個目錄列表放在引號中,就像在弗拉基米爾的例子中一樣,但我猜這個問題確實是在其他地方... – schnaader 2008-11-17 12:09:44

+0

在引用它開始工作後的某個時刻。不知道還有什麼不對,但現在它工作。謝謝! – 2008-11-17 17:37:55

1

從命令行編譯程序時是否設置了$(BDS)環境變量?如果不是,那可能是問題所在。

將引號放在包含空格的路徑上可能會解決空間問題。這爲我工作:

-U 「C:\路徑圖書館\第一個庫; C:\路徑庫\二庫; C:\路徑庫\三庫」

+0

謝謝弗拉基米爾! – 2008-11-17 17:35:57

1

檢查,如果你在當前文件夾中有應用程序名稱 .cfg文件。 Dcc32將首先嚐試從該文件讀取配置。只有當文件不存在時,它纔會從dcc32.cfg中讀取。

+0

謝謝你gabr--我不知道! – 2008-11-17 17:35:14

3

儘管.cfg文件在Delphi 2007命令行編譯器中仍然有效,但您應該真的使用MSBuild編譯您的項目。 CFG文件不再被IDE使用。您設置設計時間的任何編譯器選項都不會寫入.cfg文件。使用MSBuild並不難,然後使用.cfg。如果你希望它更靈活,因爲你可以改變實際的構建過程。

的MSBuild YourProject.dproj

2

德爾福實際上會給你需要在輸出選項卡,當你做一個編譯或建立命令行。

  1. 在Delphi中正常生成項目。
  2. 底部會有一個名爲「Output」的選項卡,查找一行說「Target CoreCompile」(在D2007中 - 在其他版本中可能有所不同)。下面的行將是用於構建項目的命令行(這是你想要的)。順便說一句 - 你不必等待你的項目完成構建,你可以在它完成之前點擊取消,因爲你需要的只是DCC32命令行調用。另外,如果你已經完成了前面的編譯,你可能想在構建之前右擊並清除輸出,所以你沒有太多的「噪音」。
  3. 單擊該行以突出顯示它,然後右鍵單擊該行並選擇複製。
  4. 打開一個空的批處理文件並粘貼。 (警告,該行可能很長)
  5. 現在,轉到該行的開頭,並且如果您的DCC32編譯器的路徑包含空格,則需要在DCC32調用周圍加引號,不要放在參數周圍的引號。
  6. 在DCC32調用上方插入一行,然後輸入dos命令將目錄設置到您的dpr文件所在的目錄,否則DCC32會說它找不到您的項目。例如。
    G: 然後 cd \Apps\MyProject
  7. 保存的批處理文件,你準備好去。