File tree Expand file tree Collapse file tree 2 files changed +19
-6
lines changed
crates/qt-build-utils/src Expand file tree Collapse file tree 2 files changed +19
-6
lines changed Original file line number Diff line number Diff line change @@ -102,10 +102,8 @@ impl TryFrom<PathBuf> for QtInstallationQMake {
102102
103103 fn try_from ( qmake_path : PathBuf ) -> anyhow:: Result < Self > {
104104 // Attempt to read the QT_VERSION from qmake
105- let qmake_version = match Command :: new ( & qmake_path)
106- . args ( [ "-query" , "QT_VERSION" ] )
107- . output ( )
108- {
105+ let qmake_command: String = format ! ( "{} -query QT_VERSION" , qmake_path. to_string_lossy( ) ) ;
106+ let qmake_version = match utils:: native_shell_command ( & qmake_command) . output ( ) {
109107 Err ( e) if e. kind ( ) == ErrorKind :: NotFound => Err ( QtBuildError :: QtMissing ) ,
110108 Err ( e) => Err ( QtBuildError :: QmakeFailed ( e) ) ,
111109 Ok ( output) if !output. status . success ( ) => Err ( QtBuildError :: QtMissing ) ,
@@ -373,9 +371,9 @@ impl QtInstallationQMake {
373371 }
374372
375373 fn qmake_query ( & self , var_name : & str ) -> String {
374+ let qmake_command = format ! ( "{} -query {}" , self . qmake_path. to_string_lossy( ) , var_name) ;
376375 String :: from_utf8_lossy (
377- & Command :: new ( & self . qmake_path )
378- . args ( [ "-query" , var_name] )
376+ & utils:: native_shell_command ( & qmake_command)
379377 . output ( )
380378 . unwrap ( )
381379 . stdout ,
Original file line number Diff line number Diff line change 33//
44// SPDX-License-Identifier: MIT OR Apache-2.0
55
6+ use std:: process:: Command ;
7+
68/// Whether apple is the current target
79pub ( crate ) fn is_apple_target ( ) -> bool {
810 std:: env:: var ( "TARGET" )
@@ -14,3 +16,16 @@ pub(crate) fn is_apple_target() -> bool {
1416pub ( crate ) fn is_emscripten_target ( ) -> bool {
1517 std:: env:: var ( "CARGO_CFG_TARGET_OS" ) == Ok ( "emscripten" . to_owned ( ) )
1618}
19+
20+ /// Wrap a command in a native subshell
21+ pub ( crate ) fn native_shell_command ( command : & str ) -> Command {
22+ let mut result: Command ;
23+ if cfg ! ( target_os = "windows" ) {
24+ result = Command :: new ( "cmd" ) ;
25+ result. args ( [ "/C" , command] ) ;
26+ } else {
27+ result = Command :: new ( "sh" ) ;
28+ result. args ( [ "-c" , command] ) ;
29+ }
30+ result
31+ }
You can’t perform that action at this time.
0 commit comments