瀏覽代碼

fix(cli): don't build library when building desktop targets, closes #7007 (#7014)

Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
Flysoft 2 年之前
父節點
當前提交
aa6c9164e6

+ 6 - 0
.changes/cli-library-compilation.md

@@ -0,0 +1,6 @@
+---
+"cli.rs": patch
+"cli.js": patch
+---
+
+Don't build library files when building desktop targets.

+ 0 - 1
examples/api/src-tauri/src/main.rs

@@ -6,6 +6,5 @@
 #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
 
 fn main() {
-  #[cfg(desktop)]
   api_lib::run();
 }

+ 1 - 1
tooling/cli/src/build.rs

@@ -330,7 +330,7 @@ pub fn setup(options: &mut Options, mobile: bool) -> Result<AppInterface> {
     .features
     .get_or_insert(Vec::new())
     .extend(config_.build.features.clone().unwrap_or_default());
-  interface.build_options(&mut options.features, mobile);
+  interface.build_options(&mut options.args, &mut options.features, mobile);
 
   Ok(interface)
 }

+ 11 - 3
tooling/cli/src/interface/rust.rs

@@ -346,14 +346,17 @@ fn lookup<F: FnMut(FileType, PathBuf)>(dir: &Path, mut f: F) {
 
 fn shared_options(
   mobile: bool,
+  args: &mut Vec<String>,
   features: &mut Option<Vec<String>>,
   app_settings: &RustAppSettings,
 ) {
   if mobile {
+    args.push("--lib".into());
     features
       .get_or_insert(Vec::new())
       .push("tauri/rustls-tls".into());
   } else {
+    args.push("--bins".into());
     let all_features = app_settings
       .manifest
       .all_enabled_features(if let Some(f) = features { f } else { &[] });
@@ -385,7 +388,7 @@ fn dev_options(
   }
   *args = dev_args;
 
-  shared_options(mobile, features, app_settings);
+  shared_options(mobile, args, features, app_settings);
 
   if !args.contains(&"--no-default-features".into()) {
     let manifest_features = app_settings.manifest.features();
@@ -410,11 +413,16 @@ fn dev_options(
 }
 
 impl Rust {
-  pub fn build_options(&self, features: &mut Option<Vec<String>>, mobile: bool) {
+  pub fn build_options(
+    &self,
+    args: &mut Vec<String>,
+    features: &mut Option<Vec<String>>,
+    mobile: bool,
+  ) {
     features
       .get_or_insert(Vec::new())
       .push("custom-protocol".into());
-    shared_options(mobile, features, &self.app_settings);
+    shared_options(mobile, args, features, &self.app_settings);
   }
 
   fn run_dev<F: Fn(ExitStatus, ExitReason) + Send + Sync + 'static>(

+ 12 - 1
tooling/cli/src/mobile/mod.rs

@@ -125,7 +125,7 @@ impl Target {
   }
 }
 
-#[derive(Debug, Clone, Default, Serialize, Deserialize)]
+#[derive(Debug, Clone, Serialize, Deserialize)]
 pub struct CliOptions {
   pub features: Option<Vec<String>>,
   pub args: Vec<String>,
@@ -133,6 +133,17 @@ pub struct CliOptions {
   pub vars: HashMap<String, OsString>,
 }
 
+impl Default for CliOptions {
+  fn default() -> Self {
+    Self {
+      features: None,
+      args: vec!["--lib".into()],
+      noise_level: Default::default(),
+      vars: Default::default(),
+    }
+  }
+}
+
 fn setup_dev_config(
   config_extension: &mut Option<String>,
   force_ip_prompt: bool,

+ 0 - 1
tooling/cli/templates/app/src-tauri/src/main.rs

@@ -2,6 +2,5 @@
 #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
 
 fn main() {
-  #[cfg(desktop)]
   app_lib::run();
 }