status-desktop/app
Stefan 37ab1a5513 chore(CPP/CI): basic CI setup for linux cmake build
Linux dockerized build and AppDir generation for compilation errors

Also added AppImage TODOs, basic setup for MacOS and Windows but they
still need work to have at least validation running

Temporary disable CPP windows/mac until limitations are
addressed in a follow up commit

Extra: add build configuration fixes for rest of the platforms

closes: #5998
2022-07-01 14:41:28 +02:00
..
qml chore(CPP): Basic project configuration setup using Qt6 2022-06-30 12:16:33 +02:00
res chore(CPP): Basic project configuration setup using Qt6 2022-06-30 12:16:33 +02:00
src chore(cpp): remove STRINGIFY macro 2022-07-01 10:45:09 +02:00
CMakeLists.txt chore(CPP/CI): basic CI setup for linux cmake build 2022-07-01 14:41:28 +02:00
README.md chore(CPP/CI): basic CI setup for linux cmake build 2022-07-01 14:41:28 +02:00

README.md

CPP App

Setup dependencies

1. conancenter

Execute conan remote list. It should return this line among the results:

conancenter: https://center.conan.io [Verify SSL: True]

If it doesn't, consider upgrading conan with pip install conan --upgrade and then executing. conan remote add -i 0 conancenter https://center.conan.io. See conan's documentation for more info.

2. conan libstdc++11

This applies to linux: the default conan profile does not work, since GCC uses the new C++ ABI since version 5.1 and conan, for compatibility purposes uses the old C++ ABI. Execute this to update the profile:

conan profile update settings.compiler.libcxx=libstdc++11 default

2. Install dependencies

Platform specific conan profile

  • Macos:
    • Intel: conan install . --profile=vendor/conan-configs/apple-arm64.ini -s build_type=Release --build=missing -if=build/conan
    • Apple silicon: conan install . --profile=vendor/conan-configs/apple-x86_64.ini -s build_type=Release --build=missing -if=build/conan
  • Windows: TODO
  • Linux: conan install . -s build_type=Release --build=missing -if=build/conan

Buid, test & run

Update CMake to the Latest Release

Build with conan

# linux
CMAKE_PREFIX_PATH="$HOME/Qt/6.4.0/gcc_64" conan build . -if=build/conan -bf=build

# MacOS: CMAKE_PREFIX_PATH="$HOME/Qt/6.4.0/macos" conan build . -if=build/conan -bf=build

# Windows: CMAKE_PREFIX_PATH="$HOME/Qt/6.4.0/mingw_64" conan build . -if=build/conan -bf=build

ctest -VV -C Release
./status-desktop

Build with cmake

# linux
cmake -B build -S . -DCMAKE_PREFIX_PATH="$HOME/Qt/6.4.0/gcc_64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=build/conan/conan_toolchain.cmake

# MacOS: cmake -B build -S . -DCMAKE_PREFIX_PATH="$HOME/Qt/6.4.0/macos" -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=build/conan/conan_toolchain.cmake

# Windows: cmake -B build -S . -DCMAKE_PREFIX_PATH="$HOME/Qt/6.4.0/mingw_64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=build/conan/conan_toolchain.cmake

cmake --build build --config Release