2013-02-18 19 views
5

.pro'u içeren dizine pencere stili yolunu almak veya _PRO_FILE_PWD_'da bir Windows stili yoluna ne dönüştürüleceğini dönüştürmek var mı?QMake Komut Dosyası'nda Windows'a Unix yolunu dönüştürme


Ben pencerelerde Unix tarzı yolunu döndürür QMake içinde _PRO_FILE_PWD_ değişkeni ile bir sorunu var.

örneğin c:/foo/bar yerine c:\foo\bar

Bu yol bir post bağlantı adımın bir parçası olarak kullanılmakta olan bir sorunu gösteriyor.

QMAKE_POST_LINK += copy /y $$[QT_INSTALL_BINS]\\QtCore4.dll $${_PRO_FILE_PWD_}/bin/; 

Ben Visual Studio projesi oluşturmak için .pro dosyası kullanmak ve ben elle değiştirirseniz ileri herşey hatasız ince kopyalanmış olduğunu VS eğik çizgi arkaya eğik olduğunu görebilirsiniz.

Yolu düzeltmezsem Visual Studio'da aşağıdaki hatayı alıyorum./Karakterleri kullanarak yolun etrafında kaçan çift tırnak ekleyerek Roku için

PostBuildEvent: 
1> Description: copy /y C:\Qt\4.8.3\bin\QtCore4.dll E:/foo/build/win32//bin//; 
1> The syntax of the command is incorrect. 
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: The command "copy /y C:\Qt\4.8.3\bin\QtCore4.dll E:/foo/build/win32/bin/; 
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets(113,5): error MSB3073: :VCEnd" exited with code 1. 

Çözüm

Çok basit bir çözüm teşekkürler. addingi çoklu kopya için

MAKE_POST_LINK += 
    copy /y $$[QT_INSTALL_BINS]\\QtCore4.dll \"$${_PRO_FILE_PWD_}/bin/\"; 

Not noktalı virgül çalışmıyor işareti ile bunları ayırmak gerekir emreder.

örn. böylece,

QMAKE_POST_LINK += 
    copy /y $$[QT_INSTALL_BINS]\\QtCore4.dll \"$${_PRO_FILE_PWD_}/bin/\"; 
+0

Emin karakter misiniz/sorundur? Windows'da hemen hemen her yerde çalışır. Kopyalama satırını komut istemine kopyalayıp yapıştırıp orada denediniz mi? Son olabilir; sorun mu –

+0

@Roku Sadece komut isteminde denedim ..// \ ile çalışmaz. ; Orada birkaç kopya komutları var .. Ben denedim denedim ... – volting

cevap

0

G/karakterleri kullanarak yolun etrafında kaçan çift tırnak ekleyerek bu çalışma var

QMAKE_POST_LINK += copy /y "$$shell_path($$QT_INSTALL_BINS/QtCore4.dll)" "$$shell_path($$_PROD_FILE_PWD_/bin)" 
+0

Çok basit bir çözüm bulmak için teşekkürler Roku! Noktalı virgülün çoklu komutları ayırmak için işe yaramadığını unutmayın - Ben ve ampersan kullanmak zorunda kaldı. – volting

+1

Bu çözüm, çapraz-plaka biçiminde değil: @edwinc adlı ürünü $$ shell_path() –

+0

kullanarak tercih etmelisiniz. Ayrıca, kaynak yolu eğik çizgiler kullandığında da çalışmaz. Qt4 – AntonyG

10

$$shell_path() yerel sistem biçimine eğik çizgi dönüştürür:

MAKE_POST_LINK += 
     copy /y $$[QT_INSTALL_BINS]\\QtCore4.dll \"$${_PRO_FILE_PWD_}/bin/\" & 
    MAKE_POST_LINK += 
     copy /y $$[QT_INSTALL_BINS]\\QtGui4.dll \"$${_PRO_FILE_PWD_}/bin/\"; 
+0

için bir çözüm eklendi 8/Qt 5.4 üzerinde benim için çalıştı Teşekkürler! Kopyala/y yerine '$$ QMAKE_COPY 'diyebilirsiniz, bunun yerine kopyadan bağımsız bir platform sürümü çıkar. – amenthes

3

İşin garibi yeterli, çift tırnaklardan kaçmak hedef dosya için çalışıyor ancak kaynak değil.

copy C:\dev\playground\qt\SampleProject\debug_qt.conf "C:/dev/playground/qt/build-SampleProject-Qt_8_4_6_Desktop-Debug/qt.conf" 

ama bu değil:

yani bu işleri Qt5 altında

copy "C:/dev/playground/qt/SampleProject/debug_qt.conf" "C:/dev/playground/qt/build-SampleProject-Qt_8_4_6_Desktop-Debug/qt.conf" 
Daha önce

kaydetti $$shell_path(path) çalışır.

Qt4'te, $$replace(string, old_string, new_string) bunun yerine kullanılabilir.

Örnek:

MY_PATH = $$PWD 
message($$replace(MY_PATH, /, \\)) 
+0

Müthiş. Orada hem qt4 hem de qt5 çözümlerini eklediğiniz için teşekkür ederiz. – macetw

İlgili konular