2012-02-06 24 views
6

Tôi đang cố gắng sử dụng mã ICU bằng trình liên kết MSVC. Tuy nhiên, việc khởi chạy Cygwin đặt/usr/local/bin và/usr/bin ở phía trước đường dẫn, làm cho link.exe luôn gọi phiên bản Cygwin, thay vì phiên bản MSVC. Làm cách nào để khắc phục sự cố cấu hình này? Hiện tại, tôi khởi động dấu nhắc lệnh VS, sau đó khởi động cygwin.bat.

/usr/local/bin:/usr/bin:/cygdrive/c/Program Files (x86)/Microsoft F #/v4.0:/cygdr ive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VSTSDB/Triển khai:/cygdrive/c/Tệp Chương trình (x86)/Microsoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Tệp Progra m (x86)/Microsoft Visual Studio 10.0/VC/BIN :/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Common7/Công cụ: /cygdrive/c/Windows/Microsoft.NET/F rướng/v4.0.30319:/cygdrive/c/Windows/Microsoft. NET/Framework/v3.5:/cygdrive/c/Tệp Chương trình (x86)/Microsoft Visual Studio 10.0/VC/VCPackages:/cygdrive/c/Tệp ram Prog (x86)/HTML Trợ giúp Hội thảo:/cygdrive/c/File chương trình (x86)/Microsoft Vis ual Studio 10.0/Team Tools/Công cụ hiệu suất:/cygdrive/c/Program Files (x86)/Mic rosoft SDKs/Windows/v7.0A/bin/NETFX 4.0 Công cụ:/cygdrive/c/Program Tệp (x86)/Mi crosoft SDK/Windows/v7.0A/bin:/cygdrive/c/Chương trình Tệp/Tệp phổ biến/Microsoft Shared/Windows Trực tiếp:/cygdrive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c /Windows/System32/Wbem:/cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygd rive/c/Tệp Chương trình (x86)/Microsoft SQL Máy chủ/100/Công cụ/Binn:/cygdrive/c/Progr am Tệp/Microsoft SQL Máy chủ/100/Công cụ/Binn:/cygdrive/c/Tệp Chương trình/Microsoft SQL Máy chủ/100/DTS/Binn:/cygdrive/c/Tệp Chương trình (x86)/Microsoft ASP.NET/ASP.N Trang web ET/v1 .0:/cygdrive/c/Chương trình Tệp/TortoiseHg:/cygdrive/c/Tệp Chương trình (x86) /GtkSharp/2.12/bin:/cygdrive/c/Users/tim/AppData/Roaming/npm:/cygdrive/ c/P rogram Files (x86)/nodejs:/cygdrive/c/Program Files (x86)/Common Files/Intuit/QB POSSDKRuntime:/cygdrive/c/Program Files (x86)/Git/cmd

ICU nói với tôi để

Đảm bảo rằng thứ tự của các PATH là MSVC, Cygwin, và sau đó đường dẫn khác. Kịch bản cấu hình cần một số công cụ nhất định trong Cygwin (ví dụ: grep).

Cập nhật. Cygwin.bat của tôi trông như thế này:

@echo off

C: chdir C: \ Cygwin \ bin

bash --login -i

Không có ích .

+0

Tệp 'cygwin.bat' của bạn có đặt biến môi trường' PATH' không? – sarnold

+1

Điều này thực sự nên ở trên superuser.com, nhưng hãy xem tệp .bash_profile trong thư mục chính của bạn. Con đường của bạn có nhiều khả năng được đặt trong đó và bạn sẽ có thể sửa đổi nó. –

+0

Hmm, tôi cũng xem nó, nhưng tất cả những gì tôi có là [-f "$ {HOME} /. Bashrc"]; sau đó nguồn "$ {HOME} /. bashrc" fi và .bashrc không có quá nhiều. Có một số hồ sơ mặc định mà prepends/usr/local/bin mà tôi có thể thực hiện append thay vào đó? – tofutim

Trả lời

7

Để cài đặt mặc định Cygwin, PATH được đặt là/etc/profile. Bạn có thể sửa đổi PATH sao cho/usr/local/bin:/usr/bin được nối vào thay vì được thêm vào trước.

# PATH="/usr/local/bin:/usr/bin:${PATH}" 
PATH="${PATH}:/usr/local/bin:/usr/bin/" 

Hệ quả là:

Setting environment for using Microsoft Visual Studio 2010 x86 tools. 

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>c:\cygwin\cygwin.bat 

[email protected] ~ 
$ printenv PATH 
/cygdrive/c/Program Files (x86)/Microsoft F#/v4.0:/cygdrive/c/Program Files (x86 
)/Microsoft Visual Studio 10.0/VSTSDB/Deploy:/cygdrive/c/Program Files (x86)/Mic 
rosoft Visual Studio 10.0/Common7/IDE:/cygdrive/c/Program Files (x86)/Microsoft 
Visual Studio 10.0/VC/BIN:/cygdrive/c/Program Files (x86)/Microsoft Visual Studi 
o 10.0/Common7/Tools:/cygdrive/c/Windows/Microsoft.NET/Framework/v4.0.30319:/cyg 
drive/c/Windows/Microsoft.NET/Framework/v3.5:/cygdrive/c/Program Files (x86)/Mic 
rosoft Visual Studio 10.0/VC/VCPackages:/cygdrive/c/Program Files (x86)/HTML Hel 
p Workshop:/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/Team Too 
ls/Performance Tools:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7.0 
A/bin/NETFX 4.0 Tools:/cygdrive/c/Program Files (x86)/Microsoft SDKs/Windows/v7. 
0A/bin:/cygdrive/c/Program Files/Common Files/Microsoft Shared/Windows Live:/cyg 
drive/c/Windows/system32:/cygdrive/c/Windows:/cygdrive/c/Windows/System32/Wbem:/ 
cygdrive/c/Windows/System32/WindowsPowerShell/v1.0:/cygdrive/c/Program Files (x8 
6)/Microsoft SQL Server/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL S 
erver/100/Tools/Binn:/cygdrive/c/Program Files/Microsoft SQL Server/100/DTS/Binn 
:/cygdrive/c/Program Files (x86)/Microsoft ASP.NET/ASP.NET Web Pages/v1.0:/cygdr 
ive/c/Program Files/TortoiseHg:/cygdrive/c/Program Files (x86)/GtkSharp/2.12/bin 
:/cygdrive/c/Users/tim/AppData/Roaming/npm:/cygdrive/c/Program Files (x86)/nodej 
s:/cygdrive/c/Program Files (x86)/Common Files/Intuit/QBPOSSDKRuntime:/cygdrive/ 
c/Program Files (x86)/Git/cmd:/usr/local/bin:/usr/bin/ 

[email protected] ~ 
$ which link 
/cygdrive/c/Program Files (x86)/Microsoft Visual Studio 10.0/VC/BIN/link 
+0

Cảm ơn, điều đó cũng đã trả lời câu hỏi của tôi ... –

+0

Tôi thích nó khi tôi quay lại câu hỏi tôi đã hỏi và trả lời. – tofutim

3

Tôi nghĩ rằng một phương pháp sạch hơn là sử dụng ORIGINAL_PATH biến mà được tạo ra trong Cygwin của /etc/profile. Thay vì sửa đổi tệp này, hãy sửa đổi tệp .bashrc của bạn để sử dụng ORIGINAL_PATH và sau đó nối thêm /usr/local/bin/usr/bin.

.bashrc:

export PATH=$ORIGINAL_PATH:/usr/local/bin:/usr/bin 

Sau đó, bạn không cần phải sửa đổi các tập tin cài đặt Cygwin.

+1

Điều này thực sự là một cách sạch hơn để làm điều đó, mà không sửa đổi '/ etc/profile' (do đó ngăn ngừa các cập nhật trong tương lai). Tuy nhiên, nó chỉ có thể thực hiện được kể từ phiên bản 4.1-3 của 'base-utils' (được phát hành sau khi câu hỏi này ban đầu được hỏi). Ngoài ra, các biến môi trường không thực sự được đặt trong '.bashrc': sử dụng' .bash_profile' hoặc '.profile' để đặt biến môi trường trong (các) vỏ đăng nhập. –

Các vấn đề liên quan