From 5a2878bca30ace92c255de74225a4b763cb2dabb Mon Sep 17 00:00:00 2001 From: Abe Winter Date: Fri, 20 Oct 2023 16:59:28 -0400 Subject: [PATCH 1/5] working build with deb package --- CMakeLists.txt | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0caab45..33ac618 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,17 +4,11 @@ project(module-example-cpp LANGUAGES CXX) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) -include(FetchContent) -FetchContent_Declare( - viam-cpp-sdk - GIT_REPOSITORY https://github.com/viamrobotics/viam-cpp-sdk.git - GIT_TAG main - # SOURCE_DIR ${CMAKE_SOURCE_DIR}/../viam-cpp-sdk - CMAKE_ARGS -DVIAMCPPSDK_USE_DYNAMIC_PROTOS=ON - FIND_PACKAGE_ARGS -) -FetchContent_MakeAvailable(viam-cpp-sdk) +find_package(PkgConfig REQUIRED) +pkg_search_module(VIAMSDK REQUIRED IMPORTED_TARGET viam-cpp-sdk-libviamsdk) +pkg_search_module(VIAMAPI REQUIRED IMPORTED_TARGET viam-cpp-sdk-libviamapi) FILE(GLOB sources src/*.cpp) add_executable(module-example-cpp ${sources}) -target_link_libraries(module-example-cpp PRIVATE viam-cpp-sdk::viamsdk) +target_include_directories(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) +target_link_libraries(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) From 3187a3b8c0cf64b009c09f4f06dceae86aef1d89 Mon Sep 17 00:00:00 2001 From: Abe Winter Date: Fri, 20 Oct 2023 17:45:27 -0400 Subject: [PATCH 2/5] optionally use pkg-config instead of FetchContent --- .gitignore | 1 + CMakeLists.txt | 29 +++++++++++++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 927782c..d091c86 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ build/ *.tar.gz +*.deb diff --git a/CMakeLists.txt b/CMakeLists.txt index 33ac618..a00a644 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,13 +2,30 @@ cmake_minimum_required(VERSION 3.7 FATAL_ERROR) project(module-example-cpp LANGUAGES CXX) +option(FETCH_GIT "fetch from git instead of using debian package") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}) -find_package(PkgConfig REQUIRED) -pkg_search_module(VIAMSDK REQUIRED IMPORTED_TARGET viam-cpp-sdk-libviamsdk) -pkg_search_module(VIAMAPI REQUIRED IMPORTED_TARGET viam-cpp-sdk-libviamapi) - FILE(GLOB sources src/*.cpp) add_executable(module-example-cpp ${sources}) -target_include_directories(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) -target_link_libraries(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) + +if (FETCH_GIT) + include(FetchContent) + FetchContent_Declare( + viam-cpp-sdk + GIT_REPOSITORY https://github.com/viamrobotics/viam-cpp-sdk.git + GIT_TAG main + # SOURCE_DIR ${CMAKE_SOURCE_DIR}/../viam-cpp-sdk + CMAKE_ARGS -DVIAMCPPSDK_USE_DYNAMIC_PROTOS=ON + FIND_PACKAGE_ARGS + ) + FetchContent_MakeAvailable(viam-cpp-sdk) + + target_include_directories(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) + target_link_libraries(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) +else() + find_package(PkgConfig REQUIRED) + pkg_search_module(VIAMSDK REQUIRED IMPORTED_TARGET viam-cpp-sdk-libviamsdk) + pkg_search_module(VIAMAPI REQUIRED IMPORTED_TARGET viam-cpp-sdk-libviamapi) + + target_link_libraries(module-example-cpp PRIVATE viam-cpp-sdk::viamsdk) +endif() From ff4c8c6ed3770c0c6991ed5f0b27998e5658131f Mon Sep 17 00:00:00 2001 From: Abe Winter Date: Fri, 20 Oct 2023 17:47:46 -0400 Subject: [PATCH 3/5] add debian workflow which consumes .deb cpp-sdk --- .github/workflows/build.yml | 6 ++--- .github/workflows/debian.yml | 48 ++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/debian.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b38228f..783975d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -24,17 +24,15 @@ jobs: run: apt-get update && ./apt-setup.sh - name: latest cmake run: | - cd ~ ARCH=$(uname -m) wget --quiet https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$ARCH.sh chmod +x cmake-${CMAKE_VERSION}-linux-$ARCH.sh - cd /usr - ~/cmake-${CMAKE_VERSION}-linux-$ARCH.sh --skip-license + ./cmake-${CMAKE_VERSION}-linux-$ARCH.sh --skip-license --prefix=/usr - name: build run: | cmake --version mkdir build && cd build - cmake .. -G Ninja + cmake -DFETCH_GIT=ON .. -G Ninja ninja module-example-cpp cd .. - name: inspect output diff --git a/.github/workflows/debian.yml b/.github/workflows/debian.yml new file mode 100644 index 0000000..250f6f7 --- /dev/null +++ b/.github/workflows/debian.yml @@ -0,0 +1,48 @@ +on: + push: + +env: + CMAKE_VERSION: 3.27.4 + VERSION: ${{ github.event_name == 'release' && github.ref_name || format('0.0.0-{0}.{1}', github.ref_name, github.run_number) }} + +jobs: + build: + strategy: + matrix: + include: + - runs-on: buildjet-4vcpu-ubuntu-2204 + arch: amd64 + - runs-on: buildjet-4vcpu-ubuntu-2204-arm + arch: arm64 + runs-on: ${{ matrix.runs-on }} + container: debian:bookworm + steps: + - uses: actions/checkout@v3 + - name: deps + run: | + apt-get update + apt-get install -qy build-essential pkg-config ninja-build git wget libboost-log-dev + - name: latest cmake + run: | + ARCH=$(uname -m) + wget --quiet https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-linux-$ARCH.sh + chmod +x cmake-${CMAKE_VERSION}-linux-$ARCH.sh + ./cmake-${CMAKE_VERSION}-linux-$ARCH.sh --skip-license --prefix=/usr + - name: install viam sdk + run: | + wget https://storage.googleapis.com/packages.viam.com/debian/cpp-sdk/viam-cpp-sdk-0.0.0-bookworm-`uname -m`.deb + apt-get install -qy ./viam-cpp-sdk-0.0.0-bookworm-`uname -m`.deb + - name: mkdir + run: mkdir build + - name: build + working-directory: build + run: | + cmake --version + cmake .. -G Ninja + ninja module-example-cpp + file module-example-cpp + ldd module-example-cpp + - uses: actions/upload-artifact@v3 + with: + name: binary-${{ matrix.arch }} + path: build/module-example-cpp From 0f90fa382eb9d6e762a911910753dde4c1d16c43 Mon Sep 17 00:00:00 2001 From: Abe Winter Date: Fri, 20 Oct 2023 17:50:06 -0400 Subject: [PATCH 4/5] pkgconfig / fetchcontent setup was backwards --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a00a644..45b3994 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,12 +20,12 @@ if (FETCH_GIT) ) FetchContent_MakeAvailable(viam-cpp-sdk) - target_include_directories(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) - target_link_libraries(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) + target_link_libraries(module-example-cpp PRIVATE viam-cpp-sdk::viamsdk) else() find_package(PkgConfig REQUIRED) pkg_search_module(VIAMSDK REQUIRED IMPORTED_TARGET viam-cpp-sdk-libviamsdk) pkg_search_module(VIAMAPI REQUIRED IMPORTED_TARGET viam-cpp-sdk-libviamapi) - target_link_libraries(module-example-cpp PRIVATE viam-cpp-sdk::viamsdk) + target_include_directories(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) + target_link_libraries(module-example-cpp PRIVATE PkgConfig::VIAMSDK PkgConfig::VIAMAPI) endif() From be85bb5e56f7a6e00d8120fbf65d9e4d5d7fee4e Mon Sep 17 00:00:00 2001 From: Abe Winter Date: Fri, 20 Oct 2023 18:46:19 -0400 Subject: [PATCH 5/5] missing 'file' dep --- .github/workflows/debian.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/debian.yml b/.github/workflows/debian.yml index 250f6f7..7afcdf7 100644 --- a/.github/workflows/debian.yml +++ b/.github/workflows/debian.yml @@ -21,7 +21,7 @@ jobs: - name: deps run: | apt-get update - apt-get install -qy build-essential pkg-config ninja-build git wget libboost-log-dev + apt-get install -qy build-essential pkg-config ninja-build git wget libboost-log-dev file - name: latest cmake run: | ARCH=$(uname -m)