Init conan + meson project

Signed-off-by: Nikolai Rodionov <allanger@badhouseplants.net>
This commit is contained in:
2025-11-15 12:48:45 +01:00
parent 984359e5f0
commit 4aa1a38ba3
8 changed files with 235 additions and 0 deletions

45
conanfile.py Normal file
View File

@@ -0,0 +1,45 @@
import os
from conan import ConanFile
from conan.tools.meson import MesonToolchain, Meson
from conan.tools.layout import basic_layout
from conan.tools.files import copy
class daw_expConan(ConanFile):
name = "daw-exp"
version = "1.0"
package_type = "library"
# Binary configuration
settings = "os", "compiler", "build_type", "arch"
options = {"shared": [True, False], "fPIC": [True, False]}
default_options = {"shared": False, "fPIC": True}
# Sources are located in the same place as this recipe, copy them to the recipe
exports_sources = "meson.build", "src/*"
def config_options(self):
if self.settings.os == "Windows":
self.options.rm_safe("fPIC")
def configure(self):
if self.options.shared:
self.options.rm_safe("fPIC")
def layout(self):
basic_layout(self)
def generate(self):
tc = MesonToolchain(self)
tc.generate()
def build(self):
meson = Meson(self)
meson.configure()
meson.build()
def package(self):
meson = Meson(self)
meson.install()
def package_info(self):
self.cpp_info.libs = ["daw-exp"]

6
meson.build Normal file
View File

@@ -0,0 +1,6 @@
project('daw-exp ', 'cpp')
qt6 = import('qt6')
qt_dep = dependency('qt6', modules: ['Core', 'Widgets'])
exe = executable('myapp', 'src/main.cpp',
dependencies: [qt_dep],
install: true)

120
src/daw-exp.cpp Normal file
View File

@@ -0,0 +1,120 @@
#include <iostream>
#include "daw-exp.h"
void daw_exp(){
#ifdef NDEBUG
std::cout << "daw-exp/1.0: Hello World Release!\n";
#else
std::cout << "daw-exp/1.0: Hello World Debug!\n";
#endif
// ARCHITECTURES
#ifdef _M_X64
std::cout << " daw-exp/1.0: _M_X64 defined\n";
#endif
#ifdef _M_IX86
std::cout << " daw-exp/1.0: _M_IX86 defined\n";
#endif
#ifdef _M_ARM64
std::cout << " daw-exp/1.0: _M_ARM64 defined\n";
#endif
#if __i386__
std::cout << " daw-exp/1.0: __i386__ defined\n";
#endif
#if __x86_64__
std::cout << " daw-exp/1.0: __x86_64__ defined\n";
#endif
#if __aarch64__
std::cout << " daw-exp/1.0: __aarch64__ defined\n";
#endif
// Libstdc++
#if defined _GLIBCXX_USE_CXX11_ABI
std::cout << " daw-exp/1.0: _GLIBCXX_USE_CXX11_ABI "<< _GLIBCXX_USE_CXX11_ABI << "\n";
#endif
// MSVC runtime
#if defined(_DEBUG)
#if defined(_MT) && defined(_DLL)
std::cout << " daw-exp/1.0: MSVC runtime: MultiThreadedDebugDLL\n";
#elif defined(_MT)
std::cout << " daw-exp/1.0: MSVC runtime: MultiThreadedDebug\n";
#endif
#else
#if defined(_MT) && defined(_DLL)
std::cout << " daw-exp/1.0: MSVC runtime: MultiThreadedDLL\n";
#elif defined(_MT)
std::cout << " daw-exp/1.0: MSVC runtime: MultiThreaded\n";
#endif
#endif
// COMPILER VERSIONS
#if _MSC_VER
std::cout << " daw-exp/1.0: _MSC_VER" << _MSC_VER<< "\n";
#endif
#if _MSVC_LANG
std::cout << " daw-exp/1.0: _MSVC_LANG" << _MSVC_LANG<< "\n";
#endif
#if __cplusplus
std::cout << " daw-exp/1.0: __cplusplus" << __cplusplus<< "\n";
#endif
#if __INTEL_COMPILER
std::cout << " daw-exp/1.0: __INTEL_COMPILER" << __INTEL_COMPILER<< "\n";
#endif
#if __GNUC__
std::cout << " daw-exp/1.0: __GNUC__" << __GNUC__<< "\n";
#endif
#if __GNUC_MINOR__
std::cout << " daw-exp/1.0: __GNUC_MINOR__" << __GNUC_MINOR__<< "\n";
#endif
#if __clang_major__
std::cout << " daw-exp/1.0: __clang_major__" << __clang_major__<< "\n";
#endif
#if __clang_minor__
std::cout << " daw-exp/1.0: __clang_minor__" << __clang_minor__<< "\n";
#endif
#if __apple_build_version__
std::cout << " daw-exp/1.0: __apple_build_version__" << __apple_build_version__<< "\n";
#endif
// SUBSYSTEMS
#if __MSYS__
std::cout << " daw-exp/1.0: __MSYS__" << __MSYS__<< "\n";
#endif
#if __MINGW32__
std::cout << " daw-exp/1.0: __MINGW32__" << __MINGW32__<< "\n";
#endif
#if __MINGW64__
std::cout << " daw-exp/1.0: __MINGW64__" << __MINGW64__<< "\n";
#endif
#if __CYGWIN__
std::cout << " daw-exp/1.0: __CYGWIN__" << __CYGWIN__<< "\n";
#endif
}
void daw_exp_print_vector(const std::vector<std::string> &strings) {
for(std::vector<std::string>::const_iterator it = strings.begin(); it != strings.end(); ++it) {
std::cout << "daw_exp/1.0 " << *it << std::endl;
}
}

14
src/daw-exp.h Normal file
View File

@@ -0,0 +1,14 @@
#pragma once
#include <vector>
#include <string>
#ifdef _WIN32
#define DAW_EXP_EXPORT __declspec(dllexport)
#else
#define DAW_EXP_EXPORT
#endif
DAW_EXP_EXPORT void daw_exp();
DAW_EXP_EXPORT void daw_exp_print_vector(const std::vector<std::string> &strings);

9
src/main.cpp Normal file
View File

@@ -0,0 +1,9 @@
#include <QApplication>
#include <QLabel>
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
QLabel label("Hello from Qt + Meson + Conan!");
label.show();
return app.exec();
}

26
test_package/conanfile.py Normal file
View File

@@ -0,0 +1,26 @@
import os
from conan import ConanFile
from conan.tools.build import can_run
from conan.tools.meson import MesonToolchain, Meson
from conan.tools.layout import basic_layout
class daw_expTestConan(ConanFile):
settings = "os", "compiler", "build_type", "arch"
generators = "PkgConfigDeps", "MesonToolchain"
def requirements(self):
self.requires(self.tested_reference_str)
def build(self):
meson = Meson(self)
meson.configure()
meson.build()
def layout(self):
basic_layout(self)
def test(self):
if can_run(self):
cmd = os.path.join(self.cpp.build.bindir, "example")
self.run(cmd, env="conanrun")

3
test_package/meson.build Normal file
View File

@@ -0,0 +1,3 @@
project('Testdaw-exp', 'cpp')
daw-exp = dependency('daw-exp', version : '>=0.1')
executable('example', 'src/example.cpp', dependencies: daw-exp)

View File

@@ -0,0 +1,12 @@
#include "daw-exp.h"
#include <vector>
#include <string>
int main() {
daw_exp();
std::vector<std::string> vec;
vec.push_back("test_package");
daw_exp_print_vector(vec);
}