diff options
author | Ondřej Čertík <ondrej@certik.us> | 2020-01-12 15:18:04 -0700 |
---|---|---|
committer | Ondřej Čertík <ondrej@certik.us> | 2020-01-12 15:18:04 -0700 |
commit | 434213681dc74d8d6fae62e34917dfe4c9efb086 (patch) | |
tree | 51bce302f5a412f3ab9759d4a23ddc087d5fd6a5 /src/main.rs | |
parent | 66971b3a4b0d06925aee05a772bb61233e54ac2f (diff) | |
download | fpm-434213681dc74d8d6fae62e34917dfe4c9efb086.tar.gz fpm-434213681dc74d8d6fae62e34917dfe4c9efb086.zip |
Run CMake as part of "build", implement "run"
Diffstat (limited to 'src/main.rs')
-rw-r--r-- | src/main.rs | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs index 85ba64a..ddcb335 100644 --- a/src/main.rs +++ b/src/main.rs @@ -30,6 +30,51 @@ fn build() { println!("File: {}", file.to_str().unwrap()); } println!("Files: {:?}", files); + let s = "\ +cmake_minimum_required(VERSION 3.5.0 FATAL_ERROR) + +enable_language(Fortran) + +project(p1) + +set(SRC + a.f90 + b.f90 +) + +add_executable(p1 main.f90 ${SRC}) +"; + std::fs::write("CMakeLists.txt", s).unwrap(); + let output = std::process::Command::new("cmake") + .args(&["-B", "build", "."]) + .output().unwrap(); + println!("status: {}", output.status); + println!("stdout: {}", String::from_utf8_lossy(&output.stdout)); + println!("stderr: {}", String::from_utf8_lossy(&output.stderr)); + if !output.status.success() { + panic!("Command failed.") + } + + let output = std::process::Command::new("cmake") + .args(&["--build", "build"]) + .output().unwrap(); + println!("status: {}", output.status); + println!("stdout: {}", String::from_utf8_lossy(&output.stdout)); + println!("stderr: {}", String::from_utf8_lossy(&output.stderr)); + if !output.status.success() { + panic!("Command failed.") + } +} + +fn run() { + let output = std::process::Command::new("build/p1") + .output().unwrap(); + println!("status: {}", output.status); + println!("stdout: {}", String::from_utf8_lossy(&output.stdout)); + println!("stderr: {}", String::from_utf8_lossy(&output.stderr)); + if !output.status.success() { + panic!("Command failed.") + } } fn main() { @@ -38,6 +83,10 @@ fn main() { if args.command == "build" { println!("Command: build"); build(); + } else if args.command == "run" { + println!("Command: run"); + build(); + run(); } else { panic!("Unknown command"); } |