diff options
author | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
---|---|---|
committer | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-10 14:33:42 +0000 |
commit | af1a266670d040d2f4083ff309d732d648afba2a (patch) | |
tree | 2fc46203448ddcc6f81546d379abfaeb323575e9 /meson/test cases/cmake/4 code gen | |
parent | e02cda008591317b1625707ff8e115a4841aa889 (diff) |
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'meson/test cases/cmake/4 code gen')
5 files changed, 64 insertions, 0 deletions
diff --git a/meson/test cases/cmake/4 code gen/main.cpp b/meson/test cases/cmake/4 code gen/main.cpp new file mode 100644 index 000000000..a41204b7d --- /dev/null +++ b/meson/test cases/cmake/4 code gen/main.cpp @@ -0,0 +1,8 @@ +#include <iostream> +#include "test.hpp" + +using namespace std; + +int main(void) { + cout << getStr() << endl; +} diff --git a/meson/test cases/cmake/4 code gen/meson.build b/meson/test cases/cmake/4 code gen/meson.build new file mode 100644 index 000000000..80c801fa0 --- /dev/null +++ b/meson/test cases/cmake/4 code gen/meson.build @@ -0,0 +1,24 @@ +project('cmake_code_gen', ['c', 'cpp']) + +if meson.is_cross_build() + error('MESON_SKIP_TEST this test does not cross compile correctly.') +endif + +cm = import('cmake') + +# Subproject with the "code generator" +sub_pro = cm.subproject('cmCodeGen') +sub_exe = sub_pro.target('genA') + +# Generate the source +generated = custom_target( + 'cmake-generated', + input: [], + output: ['test.cpp'], + command: [sub_exe, '@OUTPUT@'] +) + +# Build the exe +exe1 = executable('main1', ['main.cpp', generated]) + +test('test1', exe1) diff --git a/meson/test cases/cmake/4 code gen/subprojects/cmCodeGen/CMakeLists.txt b/meson/test cases/cmake/4 code gen/subprojects/cmCodeGen/CMakeLists.txt new file mode 100644 index 000000000..ff50e54d5 --- /dev/null +++ b/meson/test cases/cmake/4 code gen/subprojects/cmCodeGen/CMakeLists.txt @@ -0,0 +1,6 @@ +cmake_minimum_required(VERSION 3.7) + +project(CMCodeGen) +set(CMAKE_CXX_STANDARD 14) + +add_executable(genA main.cpp) diff --git a/meson/test cases/cmake/4 code gen/subprojects/cmCodeGen/main.cpp b/meson/test cases/cmake/4 code gen/subprojects/cmCodeGen/main.cpp new file mode 100644 index 000000000..5b7fed2b9 --- /dev/null +++ b/meson/test cases/cmake/4 code gen/subprojects/cmCodeGen/main.cpp @@ -0,0 +1,21 @@ +#include <iostream> +#include <fstream> + +using namespace std; + +int main(int argc, const char *argv[]) { + if(argc < 2) { + cerr << argv[0] << " requires an output file!" << endl; + return 1; + } + ofstream out(argv[1]); + out << R"( +#include "test.hpp" + +std::string getStr() { + return "Hello World"; +} +)"; + + return 0; +} diff --git a/meson/test cases/cmake/4 code gen/test.hpp b/meson/test cases/cmake/4 code gen/test.hpp new file mode 100644 index 000000000..8e25a0a5e --- /dev/null +++ b/meson/test cases/cmake/4 code gen/test.hpp @@ -0,0 +1,5 @@ +#pragma once + +#include <string> + +std::string getStr(); |