From 39074b8249de8670b3cdf09673ac71412f36529c Mon Sep 17 00:00:00 2001 From: Jonathan Linat Date: Mon, 8 Jan 2024 22:16:41 -0500 Subject: [PATCH] CI: Enable Qt5 + lightpreview (#406) * chore(CI): refine current 'cmake.yml' file content * chore(CI): enable Qt5 on Linux and macOS * Appveyor.yml: remove deploy step we are deploying from GitHub Actions now * build-linux-64.sh: adjust .zip wildcard to hopefully not break on PR builds * build-linux-64.sh: remove fragile unzip/readelf lines * lightpreview\CMakeLists.txt: only install Qt on Win/Mac * lightpreview: attempt to fix mac Qt packaging * lightpreview: apple fixes * Install qtdbus on macOS * try alternate dbus module name * try cmake find_package for dbus * also find Qt5PrintSupport * build-osx.sh: remove coreutils install we don't use sha256sum anymore * lightpreview/CMakeLists.txt: create .app bundle on macOS * Update CMakeLists.txt * build-*: run cpack as part of the build command on my macOS test system, running cpack separately is doubling the build time * cmake: factor out add_loader_path_to_rpath function, apply to all targets * chore(CI): add steps to re-pack the 'doc' and 'bin' directories * chore(CI): remove GitHub release-related step (to be re-introduced) * chore(CI): adjust inflating destination directories --------- Co-authored-by: Eric Wasylishen --- .github/workflows/cmake.yml | 86 -------------------- .github/workflows/continuous-building.yml | 99 +++++++++++++++++++++++ CMakeLists.txt | 8 ++ appveyor.yml | 9 --- bspinfo/CMakeLists.txt | 1 + bsputil/CMakeLists.txt | 1 + build-linux-64.sh | 7 +- build-osx.sh | 17 ++-- build-windows.ps1 | 9 +-- light/CMakeLists.txt | 7 +- lightpreview/CMakeLists.txt | 76 ++++++++++++----- maputil/CMakeLists.txt | 1 + qbsp/CMakeLists.txt | 1 + tests/CMakeLists.txt | 1 + vis/CMakeLists.txt | 1 + 15 files changed, 183 insertions(+), 141 deletions(-) delete mode 100644 .github/workflows/cmake.yml create mode 100644 .github/workflows/continuous-building.yml diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml deleted file mode 100644 index a2b40dc6..00000000 --- a/.github/workflows/cmake.yml +++ /dev/null @@ -1,86 +0,0 @@ -name: CMake - -on: [push, pull_request] - -jobs: - build: - runs-on: ${{ matrix.os }} - strategy: - # Don't cancel the macOS build if the Linux build fails, etc. - fail-fast: false - matrix: - os: [ubuntu-20.04, macos-11, windows-2019] - use-asan: [YES, NO] - exclude: - - os: windows-2019 - use-asan: YES - env: - # Expose to the build-*.sh in an environment variable - USE_ASAN: ${{ matrix.use-asan }} - steps: - - uses: actions/checkout@v2 - with: - submodules: 'recursive' - - # https://github.com/ilammy/msvc-dev-cmd - - name: Setup MSVC environment - if: runner.os == 'Windows' - uses: ilammy/msvc-dev-cmd@v1 - - - name: Linux Build - if: runner.os == 'Linux' - run: | - sudo apt-get update - # for Sphinx - sudo apt-get install -y python3-pip - ./build-linux-64.sh - - - name: macOS Build - if: runner.os == 'macOS' - run: | - ./build-osx.sh - - - name: Windows Build - if: runner.os == 'Windows' - run: | - .\build-windows.ps1 - - # Upload artifacts. - # These need to be separate, otherwise all of the artifacts are bundled into - # one .zip file. - - - name: Upload win64 artifact - uses: actions/upload-artifact@v3 - if: ${{ runner.os == 'Windows' && matrix.use-asan == 'NO' }} - with: - name: ericw-tools-${{ github.sha }}-win64 - path: | - build-windows/ericw-tools-*.zip - - - name: Upload Linux artifact - uses: actions/upload-artifact@v3 - if: ${{ runner.os == 'Linux' && matrix.use-asan == 'NO' }} - with: - name: ericw-tools-${{ github.sha }}-Linux - path: | - build-linux/ericw-tools-*.zip - - - name: Upload macOS artifact - uses: actions/upload-artifact@v3 - if: ${{ runner.os == 'macOS' && matrix.use-asan == 'NO' }} - with: - name: ericw-tools-${{ github.sha }}-macOS - path: | - build-osx/ericw-tools-*.zip - - - name: Create GitHub Release and upload builds - uses: softprops/action-gh-release@v1 - if: ${{ startsWith(github.ref, 'refs/tags/') && matrix.use-asan == 'NO' && runner.os != 'Windows' }} - with: - draft: true - files: | - build-osx/ericw-tools-*.zip - build-linux/ericw-tools-*.zip - build-windows/ericw-tools-*.zip - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/continuous-building.yml b/.github/workflows/continuous-building.yml new file mode 100644 index 00000000..a0733507 --- /dev/null +++ b/.github/workflows/continuous-building.yml @@ -0,0 +1,99 @@ +name: Continuous Building + +on: + - push + - pull_request + +jobs: + build-and-upload: + name: Build & upload the artifact + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: + - ubuntu-22.04 + - macos-12 + - windows-2022 + use-asan: + - YES + - NO + exclude: + - os: windows-2022 + use-asan: YES + env: + USE_ASAN: ${{ matrix.use-asan }} + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + + - name: 'Linux: Install Qt5' + if: startsWith(matrix.os, 'ubuntu-') + run: | + sudo apt update + sudo apt install qtbase5-dev libqt5svg5-dev + - name: 'Linux: Build the artifact' + if: startsWith(matrix.os, 'ubuntu-') + run: ./build-linux-64.sh + - name: 'Linux: Prepare the artifact' + if: ${{ startsWith(matrix.os, 'ubuntu-') }} + run: | + unzip build-linux/*-Linux.zip + mv ericw-tools-*/*-Linux/ ericw-tools-linux + - name: 'Linux: Upload the artifact' + if: ${{ startsWith(matrix.os, 'ubuntu-') && matrix.use-asan == 'NO' }} + uses: actions/upload-artifact@v4 + with: + path: ericw-tools-linux/ + name: ericw-tools-${{ github.sha }}-linux + if-no-files-found: error + + - name: 'macOS: Install Qt5' + if: ${{ startsWith(matrix.os, 'macos-') }} + uses: jurplel/install-qt-action@v3 + with: + version: 5.15.2 + - name: 'macOS: Build the artifact' + if: startsWith(matrix.os, 'macos-') + run: ./build-osx.sh + - name: 'macOS: Prepare the artifact' + if: ${{ startsWith(matrix.os, 'macos-') }} + run: | + unzip build-osx/*-Darwin.zip + mv ericw-tools-*/*-Darwin/ ericw-tools-macos + - name: 'macOS: Upload the artifact' + if: ${{ startsWith(matrix.os, 'macos-') && matrix.use-asan == 'NO' }} + uses: actions/upload-artifact@v4 + with: + path: ericw-tools-macos/ + name: ericw-tools-${{ github.sha }}-macos + if-no-files-found: error + + - name: 'Windows: Setup MSVC environment' + if: startsWith(matrix.os, 'windows-') + uses: ilammy/msvc-dev-cmd@v1 + - name: 'Windows: Install Qt5' + if: ${{ startsWith(matrix.os, 'windows-') }} + uses: jurplel/install-qt-action@v3 + with: + version: 5.15.2 + arch: win64_msvc2019_64 + - name: 'Windows: Build the artifact' + if: startsWith(matrix.os, 'windows-') + run: .\build-windows.ps1 + - name: 'Windows: Prepare the artifact' + if: ${{ startsWith(matrix.os, 'windows-') }} + run: | + 7z x build-windows\*-win64.zip -o"ericw-tools-windows-temp\" -y + New-Item -ItemType Directory -Path ericw-tools-windows + Get-ChildItem -Path ericw-tools-windows-temp\ericw-tools-*\*-win64 -Recurse | + Move-Item -Destination ericw-tools-windows + shell: pwsh + - name: 'Windows: Upload the artifact' + if: ${{ startsWith(matrix.os, 'windows-') && matrix.use-asan == 'NO' }} + uses: actions/upload-artifact@v4 + with: + path: ericw-tools-windows/ + name: ericw-tools-${{ github.sha }}-windows + if-no-files-found: error diff --git a/CMakeLists.txt b/CMakeLists.txt index 423a4107..6d99deae 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -96,6 +96,14 @@ function(copy_mingw_dlls TARGETNAME) endif() endfunction() +# so the executable will search for dylib's in the same directory as the executable +function(add_loader_path_to_rpath TARGETNAME) + if(APPLE) + add_custom_command(TARGET ${TARGETNAME} POST_BUILD + COMMAND bash ARGS -c \"install_name_tool -add_rpath @loader_path $ || true\") + endif() +endfunction() + if (WIN32) set("NO_ITERATOR_DEBUG" FALSE CACHE BOOL "Whether to use MSVC iterator debugging or not") diff --git a/appveyor.yml b/appveyor.yml index 87c37f02..b181162b 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -13,12 +13,3 @@ build_script: - cmd: powershell .\build-appveyor.ps1 artifacts: - path: cmakebuild\*.zip -deploy: - description: 'release description' - provider: GitHub - auth_token: - secure: +KEW/TPBKmDCgwmkYgXMuhDJPY1iGeWz7Qf4Vw42Rnk+6OixNCfbvS+zP9IvYgtD - draft: true - prerelease: false - on: - appveyor_repo_tag: true diff --git a/bspinfo/CMakeLists.txt b/bspinfo/CMakeLists.txt index 3aab9bc2..8ba6d7dc 100644 --- a/bspinfo/CMakeLists.txt +++ b/bspinfo/CMakeLists.txt @@ -7,5 +7,6 @@ add_custom_command(TARGET bspinfo POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" ) copy_mingw_dlls(bspinfo) +add_loader_path_to_rpath(bspinfo) install(TARGETS bspinfo RUNTIME DESTINATION bin) diff --git a/bsputil/CMakeLists.txt b/bsputil/CMakeLists.txt index 129b1bb7..5bd5b54b 100644 --- a/bsputil/CMakeLists.txt +++ b/bsputil/CMakeLists.txt @@ -15,5 +15,6 @@ add_custom_command(TARGET bsputil POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" ) copy_mingw_dlls(bsputil) +add_loader_path_to_rpath(bsputil) install(TARGETS bsputil RUNTIME DESTINATION bin) diff --git a/build-linux-64.sh b/build-linux-64.sh index 8c3a35bd..d91f8ec9 100755 --- a/build-linux-64.sh +++ b/build-linux-64.sh @@ -25,7 +25,7 @@ TBB_CMAKE_DIR="$(pwd)/oneapi-tbb-2021.3.0/lib/cmake" # check USE_ASAN environment variable (see cmake.yml) if [ "$USE_ASAN" == "YES" ]; then - cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" -DERICWTOOLS_ASAN=YES + cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" -DENABLE_LIGHTPREVIEW=YES -DERICWTOOLS_ASAN=YES else cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" fi @@ -33,8 +33,7 @@ fi # not yet free of memory leaks, so don't abort on leak detection export ASAN_OPTIONS=detect_leaks=false -make -j8 VERBOSE=1 || exit 1 -cpack || exit 1 +make -j8 VERBOSE=1 package || exit 1 # run tests if [ "$USE_ASAN" != "YES" ]; then @@ -45,5 +44,3 @@ fi # check rpath readelf -d ./light/light -unzip -X ericw-tools-*.zip -readelf -d ./ericw-tools-*/bin/light diff --git a/build-osx.sh b/build-osx.sh index 5da225a4..0d72ec16 100755 --- a/build-osx.sh +++ b/build-osx.sh @@ -1,12 +1,9 @@ #!/bin/bash -# for sha256sum, used by the tests -brew install coreutils - python3 -m pip install -r docs/requirements.txt --force-reinstall BUILD_DIR=build-osx -EMBREE_ZIP="https://github.com/embree/embree/releases/download/v3.13.0/embree-3.13.0.x86_64.macosx.zip" +EMBREE_ZIP="https://github.com/embree/embree/releases/download/v3.13.1/embree-3.13.1.x86_64.macosx.zip" # embree-3.13.1.x86_64.macosx.zip EMBREE_ZIP_NAME=$(basename "$EMBREE_ZIP") @@ -14,9 +11,9 @@ EMBREE_ZIP_NAME=$(basename "$EMBREE_ZIP") # embree-3.13.1.x86_64.macosx EMBREE_DIR_NAME=$(basename "$EMBREE_ZIP_NAME" ".zip") -TBB_TGZ="https://github.com/oneapi-src/oneTBB/releases/download/v2021.2.0/oneapi-tbb-2021.2.0-mac.tgz" +TBB_TGZ="https://github.com/oneapi-src/oneTBB/releases/download/v2021.3.0/oneapi-tbb-2021.3.0-mac.tgz" TBB_TGZ_NAME=$(basename "$TBB_TGZ") -TBB_DIR_NAME="oneapi-tbb-2021.2.0" +TBB_DIR_NAME="oneapi-tbb-2021.3.0" if [ -d "$BUILD_DIR" ]; then echo "$BUILD_DIR already exists, remove it first" @@ -32,16 +29,16 @@ unzip -q "$EMBREE_ZIP_NAME" wget -q "$TBB_TGZ" tar xf "$TBB_TGZ_NAME" -EMBREE_CMAKE_DIR="$(pwd)/$EMBREE_DIR_NAME/lib/cmake/embree-3.13.0" +EMBREE_CMAKE_DIR="$(pwd)/$EMBREE_DIR_NAME/lib/cmake/embree-3.13.1" TBB_CMAKE_DIR="$(pwd)/${TBB_DIR_NAME}/lib/cmake" + # check USE_ASAN environment variable (see cmake.yml) if [ "$USE_ASAN" == "YES" ]; then - cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" -DERICWTOOLS_ASAN=YES + cmake .. -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" -DENABLE_LIGHTPREVIEW=YES -DERICWTOOLS_ASAN=YES else cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH="$EMBREE_CMAKE_DIR;$TBB_CMAKE_DIR" fi -make -j8 || exit 1 -cpack || exit 1 +make -j8 package || exit 1 # print shared libraries used otool -L ./light/light diff --git a/build-windows.ps1 b/build-windows.ps1 index ecc6d24b..68369204 100644 --- a/build-windows.ps1 +++ b/build-windows.ps1 @@ -20,18 +20,13 @@ choco install ninja mkdir build-windows cd build-windows -cmake .. -GNinja -Dembree_DIR="C:\embree-3.12.1.x64.vc14.windows" -DTBB_DIR="C:\tbb\cmake" -DCMAKE_BUILD_TYPE=Release +cmake .. -GNinja -Dembree_DIR="C:\embree-3.12.1.x64.vc14.windows" -DTBB_DIR="C:\tbb\cmake" -DCMAKE_BUILD_TYPE=Release -DENABLE_LIGHTPREVIEW=YES -DQt5Widgets_DIR="C:\Qt\5.15.2\msvc2019_64\lib\cmake\Qt5Widgets" -ninja +ninja package if ( $? -eq $false ) { throw "build failed" } -cpack -if ( $? -eq $false ) { - throw "package failed" -} - .\tests\tests.exe --no-skip if ( $? -eq $false ) { diff --git a/light/CMakeLists.txt b/light/CMakeLists.txt index 9e6098df..79fc1833 100644 --- a/light/CMakeLists.txt +++ b/light/CMakeLists.txt @@ -91,12 +91,6 @@ if (embree_FOUND) COMMAND ${CMAKE_COMMAND} -E copy_if_different "${EMBREE_TBB_DLL}" "$") endif() - # so the executable will search for dylib's in the same directory as the executable - if(APPLE) - add_custom_command(TARGET light POST_BUILD - COMMAND bash ARGS -c \"install_name_tool -add_rpath @loader_path $ || true\") - endif() - if(NOT SKIP_EMBREE_INSTALL) install(FILES $ DESTINATION bin) endif() @@ -144,6 +138,7 @@ if (embree_FOUND) endif(embree_FOUND) copy_mingw_dlls(light) +add_loader_path_to_rpath(light) install(TARGETS light RUNTIME DESTINATION bin) install(FILES ../gpl_v3.txt DESTINATION bin) diff --git a/lightpreview/CMakeLists.txt b/lightpreview/CMakeLists.txt index ee7b8c15..fe46a81b 100644 --- a/lightpreview/CMakeLists.txt +++ b/lightpreview/CMakeLists.txt @@ -18,6 +18,7 @@ add_executable(lightpreview glview.h) set_target_properties(lightpreview PROPERTIES WIN32_EXECUTABLE YES) +set_target_properties(lightpreview PROPERTIES MACOSX_BUNDLE TRUE) INCLUDE_DIRECTORIES(${EMBREE_INCLUDE_DIRS}) @@ -42,31 +43,70 @@ target_link_libraries(lightpreview # from: http://stackoverflow.com/questions/40564443/copying-qt-dlls-to-executable-directory-on-windows-using-cmake # Copy Qt DLL's to bin directory for debugging -add_custom_command( - TARGET lightpreview POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ - COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ -) +if (WIN32) + add_custom_command( + TARGET lightpreview POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ + COMMAND ${CMAKE_COMMAND} -E copy_if_different $ $ + ) -# HACK: copy .dll dependencies -add_custom_command(TARGET lightpreview POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" - COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" - COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" - ) -if (NOT EMBREE_TBB_DLL STREQUAL EMBREE_TBB_DLL-NOTFOUND) + # HACK: copy .dll dependencies add_custom_command(TARGET lightpreview POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${EMBREE_TBB_DLL}" "$") + COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" + ) + if (NOT EMBREE_TBB_DLL STREQUAL EMBREE_TBB_DLL-NOTFOUND) + add_custom_command(TARGET lightpreview POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${EMBREE_TBB_DLL}" "$") + endif() endif() + copy_mingw_dlls(lightpreview) +add_loader_path_to_rpath(lightpreview) # Install Qt DLL's -install(FILES $ DESTINATION bin) -install(FILES $ DESTINATION bin) -install(FILES $ DESTINATION bin) if (WIN32) + install(FILES $ DESTINATION bin) + install(FILES $ DESTINATION bin) + install(FILES $ DESTINATION bin) install(FILES "$" DESTINATION bin/platforms) endif () -install(TARGETS lightpreview RUNTIME DESTINATION bin) +function(apple_install_lib SRC_TARGET_NAME DEST_PATH) + # SRC_TARGET_NAME - a target name, e.g. Qt5::Widgets + # DEST_PATH - destination path to install the library to + + get_target_property(SO_FILE_SYMLINK ${SRC_TARGET_NAME} IMPORTED_LOCATION_RELEASE) + message(STATUS "${SRC_TARGET_NAME} .so symlink: ${SO_FILE_SYMLINK}") + + get_filename_component(SO_FILE_SYMLINK_NAME "${SO_FILE_SYMLINK}" NAME) + message(STATUS "${SRC_TARGET_NAME} .so symlink name: ${SO_FILE_SYMLINK_NAME}") + + get_filename_component(SO_FILE "${SO_FILE_SYMLINK}" REALPATH) + + message(STATUS "${SRC_TARGET_NAME} .so file: ${SO_FILE}, renaming to: ${SO_FILE_SYMLINK_NAME} and installing in: ${DEST_PATH}") + + install(FILES ${SO_FILE} DESTINATION "${DEST_PATH}" RENAME "${SO_FILE_SYMLINK_NAME}") +endfunction() + +if (APPLE) + apple_install_lib(TBB::tbb "$") + apple_install_lib(TBB::tbbmalloc "$") + apple_install_lib(embree "$") + + # TODO: this should be replaced with macdeployqt + apple_install_lib(Qt5::Widgets "$/QtWidgets.framework/Versions/5") + apple_install_lib(Qt5::Gui "$/QtGui.framework/Versions/5") + apple_install_lib(Qt5::Core "$/QtCore.framework/Versions/5") + apple_install_lib(Qt5::QCocoaIntegrationPlugin "$/platforms") + + # these are required by QCocoaIntegrationPlugin + find_package(Qt5DBus REQUIRED) + find_package(Qt5PrintSupport REQUIRED) + apple_install_lib(Qt5::PrintSupport "$/QtPrintSupport.framework/Versions/5") + apple_install_lib(Qt5::DBus "$/QtDBus.framework/Versions/5") +endif () + +install(TARGETS lightpreview RUNTIME DESTINATION bin BUNDLE DESTINATION bin) diff --git a/maputil/CMakeLists.txt b/maputil/CMakeLists.txt index dc24a42d..abd7d5b6 100644 --- a/maputil/CMakeLists.txt +++ b/maputil/CMakeLists.txt @@ -28,5 +28,6 @@ add_custom_command(TARGET maputil POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" ) copy_mingw_dlls(maputil) +add_loader_path_to_rpath(maputil) install(TARGETS maputil RUNTIME DESTINATION bin) diff --git a/qbsp/CMakeLists.txt b/qbsp/CMakeLists.txt index 15075fc7..6d19fe48 100644 --- a/qbsp/CMakeLists.txt +++ b/qbsp/CMakeLists.txt @@ -46,3 +46,4 @@ add_custom_command(TARGET qbsp POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$") copy_mingw_dlls(qbsp) +add_loader_path_to_rpath(qbsp) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index a82a4310..062b9386 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -43,5 +43,6 @@ if (NOT EMBREE_TBB_DLL STREQUAL EMBREE_TBB_DLL-NOTFOUND) COMMAND ${CMAKE_COMMAND} -E copy_if_different "${EMBREE_TBB_DLL}" "$") endif() copy_mingw_dlls(tests) +add_loader_path_to_rpath(tests) add_definitions(-DHAVE_EMBREE) diff --git a/vis/CMakeLists.txt b/vis/CMakeLists.txt index a6b8c659..7c03e2d4 100644 --- a/vis/CMakeLists.txt +++ b/vis/CMakeLists.txt @@ -27,5 +27,6 @@ add_custom_command(TARGET vis POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "$" "$" ) copy_mingw_dlls(vis) +add_loader_path_to_rpath(vis) install(TARGETS vis RUNTIME DESTINATION bin)