Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add cmake build support #1445

Merged
merged 60 commits into from
Aug 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
c871f06
Initial import of cmake files
mcallegari Jun 19, 2023
744933a
cmake: fix linux installation paths and linking
mcallegari Jun 30, 2023
51b3f9f
cmake: fix plugins linkage on Linux
mcallegari Jun 30, 2023
2ef5e2f
engine: fix i18n test file name
mcallegari Jul 8, 2023
b17a668
plugins/dmxusb: rename interface -> iface
mcallegari Jul 8, 2023
78e075d
Update qmake to cmake doc
mcallegari Jul 8, 2023
e594a72
cmake: do not install individual qm files
mcallegari Jul 10, 2023
99bd621
cmake: fix definition installation paths
mcallegari Jul 10, 2023
53c947d
cmake: fix windows deps deployment
mcallegari Jul 10, 2023
b4f9262
* Import rc on Windows so can display correct icons
Itay-Lifshitz Jul 12, 2023
f468f00
Reverted qlcconfig.h.in and dmxusb
Itay-Lifshitz Jul 12, 2023
d4e1c60
Merge pull request #1435 from Itay-Lifshitz/cmakebuild
mcallegari Jul 18, 2023
cc460a8
plugins/dmxusb: more interface -> iface renaming
mcallegari Jul 19, 2023
5c5530e
cmake: it's QLC+
mcallegari Jul 19, 2023
7622175
cmake: distinguish qlcconfig.h depending on target
mcallegari Jul 19, 2023
33a72c4
Added missing unittest_cmake.sh
Itay-Lifshitz Jul 21, 2023
1ed252a
Merge pull request #1437 from Itay-Lifshitz/cmakebuild
mcallegari Jul 21, 2023
6118179
cmake: add missing statements to build Debian package
mcallegari Jul 22, 2023
3af53ca
Added AppImage build
Itay-Lifshitz Jul 22, 2023
62d2fdf
actions: Windows build with cmake
mcallegari Jul 23, 2023
3e96aef
actions: enable Windows builds
mcallegari Jul 23, 2023
b79c457
actions: run make commands from build folder
mcallegari Jul 23, 2023
646aee7
cmake: fix D2XX linking
mcallegari Jul 23, 2023
5ae702e
actions: disable Velleman plugin on Windows
mcallegari Jul 23, 2023
9447263
actions: disable i18n engine test
mcallegari Jul 23, 2023
bb01871
cmake: improve MSYS2 system folder
mcallegari Jul 23, 2023
b4d71d4
actions: debug
mcallegari Jul 23, 2023
afcefaf
actions: fix MSYS2 system path
mcallegari Jul 23, 2023
f08ae54
cmake: restore windows MSYS2 path
mcallegari Jul 24, 2023
d150aaf
actions: fix NSIS script project path
mcallegari Jul 24, 2023
6ee3c45
actions: increase NSIS verbosity
mcallegari Jul 24, 2023
4acce7f
actions: fix NSIS package creation
mcallegari Jul 24, 2023
62e7e24
actions: fix NSIS path again
mcallegari Jul 24, 2023
fe426e6
actions: pack all sedS earlier
mcallegari Jul 24, 2023
49fcc73
actions: fix NSIS script parsing
mcallegari Jul 24, 2023
031bbd1
actions: fix NSIS project path
mcallegari Jul 24, 2023
a17ceb3
actions: fix NSIS project path
mcallegari Jul 24, 2023
5088cbf
actions: install missing QM files
mcallegari Jul 24, 2023
c741e46
actions: upload Windows artifact
mcallegari Jul 24, 2023
ebac30a
action: Windows artifact
mcallegari Jul 24, 2023
4e1e42c
actions: fix Qt variables for Linux builds
mcallegari Jul 24, 2023
6a4c3e3
actions: still try to store windows artifact
mcallegari Jul 24, 2023
c9a2734
actions: store Windows artifact
mcallegari Jul 24, 2023
25f7a32
Merge pull request #1439 from Itay-Lifshitz/cmakebuild
mcallegari Jul 24, 2023
da443bd
actions: enable Windows builds
mcallegari Jul 23, 2023
da788e9
actions: store Windows artifact
mcallegari Jul 24, 2023
6f8f8ed
Added AppImage build
Itay-Lifshitz Jul 22, 2023
c75ad98
Merge branch 'cmakebuild' of github.com:mcallegari/qlcplus into cmake…
mcallegari Jul 25, 2023
c13a591
cmake: fix i18n test and disable appveyor build
mcallegari Jul 26, 2023
7ee0112
cmake: fixes to create Debian package
mcallegari Jul 27, 2023
0d125fc
cmake: fix build on Windows
mcallegari Jul 27, 2023
3b31386
AppImage with the official Qt packages works
Itay-Lifshitz Jul 29, 2023
4d785d9
Minor fix in Windows packaging
Itay-Lifshitz Jul 29, 2023
1df3d3d
Merge pull request #1442 from Itay-Lifshitz/cmakebuild
mcallegari Jul 29, 2023
4011d79
cmake: add missing v5 Windows deps
mcallegari Jul 29, 2023
c4d954e
Coverage build
Itay-Lifshitz Jul 30, 2023
1c16674
Merge pull request #1444 from Itay-Lifshitz/cmakebuild
mcallegari Jul 31, 2023
ef2dd59
cmake: fix platform detection on macOS
mcallegari Jul 31, 2023
2ec395b
cmake: improve library linking on macos
mcallegari Jul 31, 2023
d13ad6d
Restore appveyor profile
mcallegari Aug 1, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
77 changes: 36 additions & 41 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,15 +61,15 @@ jobs:
echo "CI_EVENT_TYPE=$(if [ 'schedule' == '${{ github.event_name }}' ]; then echo 'cron'; else echo '${{ github.event_name }}'; fi)" >> $GITHUB_ENV
echo "NPROC=$(nproc)" >> $GITHUB_ENV
echo "TASK=$(echo '${{matrix.task}}' | cut -d '-' -f 2)" >> $GITHUB_ENV
echo "QT=${QT:-$(echo '${{matrix.task}}' | cut -d '-' -f 2)}" >> $GITHUB_ENV
echo "QT_INSTALL_DIR=/opt" >> $GITHUB_ENV
echo "INSTALL_ROOT=`pwd`/install_root" >> $GITHUB_ENV
echo "BUILD_DATE=`date -u '+%Y%m%d'`" >> $GITHUB_ENV
echo "GIT_REV=`git rev-parse --short HEAD`" >> $GITHUB_ENV

- name: Set QT ENV variables (qt5)
if: ${{ endsWith( matrix.task, 'qt5') }}
run: |
echo "QT=${QT:-$(echo '${{matrix.task}}' | cut -d '-' -f 2)}" >> $GITHUB_ENV
echo "QT_INSTALL_DIR=/opt" >> $GITHUB_ENV
echo "QT_VERSION=5.14.2" >> $GITHUB_ENV
echo "QT_MODULES_INSTALL=$(echo ${QT_MODULES})" >> $GITHUB_ENV
echo "APPVERSION=`grep '^!qmlui' variables.pri | grep APPVERSION | sed 's/^.*= *//;s/ /_/g'`" >> $GITHUB_ENV
Expand All @@ -79,6 +79,8 @@ jobs:
- name: Set QT ENV variables (qt5qml)
if: ${{ endsWith( matrix.task, 'qt5qml') }}
run: |
echo "QT=${QT:-$(echo '${{matrix.task}}' | cut -d '-' -f 2)}" >> $GITHUB_ENV
echo "QT_INSTALL_DIR=/opt" >> $GITHUB_ENV
echo "QT_VERSION=5.14.2" >> $GITHUB_ENV
echo "QT_MODULES_INSTALL=$(echo ${QT_MODULES})" >> $GITHUB_ENV
echo "APPVERSION=`grep '^qmlui' variables.pri | grep APPVERSION | sed 's/^.*= *//;s/ /_/g'`" >> $GITHUB_ENV
Expand Down Expand Up @@ -251,7 +253,7 @@ jobs:
path: qlcplus-${{env.TASK}}-${{env.APPVERSION}}-${{env.BUILD_DATE}}-${{env.GIT_REV}}.AppImage

build-windows:
if: false
#if: false
runs-on: windows-latest
name: QLCplus Windows ${{matrix.task}}
strategy:
Expand Down Expand Up @@ -286,12 +288,11 @@ jobs:
echo "QT=${QT:-$(echo '${{matrix.task}}' | cut -d '-' -f 2)}" >> $GITHUB_ENV
echo "QT_VERSION=5.15.8" >> $GITHUB_ENV
echo "QT_MODULES_INSTALL=$(echo ${QT_MODULES})" >> $GITHUB_ENV
#echo "QT_INSTALL_DIR=/mingw32/qt5-static" >> $GITHUB_ENV
#source $GITHUB_ENV && echo "QTDIR=/mingw32/qt5-static" >> $GITHUB_ENV
source $GITHUB_ENV && echo "QMAKE=${QTDIR}/bin/qmake.exe" >> $GITHUB_ENV
echo "QMAKE_CC=${CC}" >> $GITHUB_ENV
echo "QMAKE_CXX=${CXX}" >> $GITHUB_ENV
echo "INSTALL_ROOT=/c/" >> $GITHUB_ENV
echo "OUTFILE=`grep 'OutFile' platforms/windows/qlcplus4Qt5.nsi | cut -d'"' -f 2`" >> $GITHUB_ENV
echo "APPVERSION=`grep '^!qmlui' variables.pri | grep APPVERSION | sed 's/^.*= *//' | cut -d ' ' -f 1`" >> $GITHUB_ENV
echo "BUILD_DATE=`date -u '+%Y%m%d'`" >> $GITHUB_ENV
echo "GIT_REV=`git rev-parse --short HEAD`" >> $GITHUB_ENV

- name: Print ENV vars
shell: bash
Expand All @@ -317,6 +318,7 @@ jobs:
unzip
mingw-w64-i686-gcc
mingw-w64-i686-gcc-libs
mingw-w64-i686-cmake
mingw-w64-i686-libmad
mingw-w64-i686-libsndfile
mingw-w64-i686-flac
Expand Down Expand Up @@ -347,66 +349,59 @@ jobs:
echo "CXX:"
which ${CXX} || true
${CXX} -v || true
echo "qmake:"
which qmake || true
qmake -v || true
echo "cmake:"
which cmake || true
cmake --version || true
pkg-config --modversion libusb-1.0
#ls -l /mingw*/bin/ || true
#ls -l /mingw*/usr/bin/ || true
#ls -l /msys*/bin/ || true
#ls -l /msys*/usr/bin/ || true
#ls -l /usr/bin/ || true

- name: Disable test units build
- name: Fix build
#if: false
shell: msys2 {0}
run: |
set MSYSTEM=MINGW32
# disable the test units, since we won't run them
sed -i -e 's/ SUBDIRS += test/#SUBDIRS += test/g' engine/engine.pro
sed -i -e 's/SUBDIRS += test/#SUBDIRS += test/g' ui/ui.pro
sed -i -e 's/ SUBDIRS += velleman/#SUBDIRS += velleman/g' plugins/plugins.pro
sed -i -e 's/ SUBDIRS += udmx/#SUBDIRS += udmx/g' plugins/plugins.pro
sed -i -e 's/ SUBDIRS += test/#SUBDIRS += test/g' plugins/artnet/artnet.pro
sed -i -e 's/SUBDIRS += test/#SUBDIRS += test/g' plugins/enttecwing/enttecwing.pro
sed -i -e 's/SUBDIRS += test/#SUBDIRS += test/g' plugins/midi/midi.pro
# disable Velleman plugin
sed -i -e 's/ add_subdirectory(velleman)/# add_subdirectory(velleman)/g' plugins/CMakeLists.txt
# fix MSYS2 system path
sed -i -e 's/$ENV{SystemDrive}\/msys64/D:\/a\/_temp\/msys64/g' platforms/windows/CMakeLists.txt
# fix project path in NSIS script
sed -i -e 's/c\:\\Qt/d:\\a\\qlcplus/g' platforms/windows/qlcplus4Qt5.nsi

- name: Configure build for Windows
shell: msys2 {0}
run: |
set MSYSTEM=MINGW32
qmake FORCECONFIG=release
mkdir build
cd build
cmake -G "Unix Makefiles" ..

- name: Build for Windows
shell: msys2 {0}
run: |
set MSYSTEM=MINGW32
cd build
make -j${NPROC}

- name: Test
if: false
shell: msys2 {0}
run: |
set MSYSTEM=MINGW32
make check

- name: Install on Windows
shell: msys2 {0}
run: |
set MSYSTEM=MINGW32
#echo 'Silently installing QLC+...'
echo "Available disk space:"
df
make INSTALL_ROOT=${INSTALL_ROOT} install
cp *.qm ${INSTALL_ROOT}
cd build
make install
cd ..
cp *.qm /c/qlcplus

- name: Build installation package
shell: msys2 {0}
run: |
set MSYSTEM=MINGW32
cd ${INSTALL_ROOT}
sed -i -e 's/Qt/projects/g' qlcplus4Qt5.nsi
cd /c/qlcplus
echo 'Creating package...'
makensis -X'SetCompressor /FINAL lzma' qlcplus4Qt5.nsi
#set CURRDATE=`date +%Y%m%d`
#mv QLC+_*.exe ${INSTALL_ROOT}/QLC+_$APPVEYOR_BUILD_VERSION.exe
mv /c/qlcplus/${{env.OUTFILE}} /d/a/qlcplus/qlcplus

- name: Store executable artifact
uses: actions/upload-artifact@v3
with:
name: QLC+-${{env.TASK}}-${{env.APPVERSION}}-${{env.BUILD_DATE}}-${{env.GIT_REV}}.exe
path: ${{env.OUTFILE}}
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -48,3 +48,6 @@ coverage/

# Development IDEs
.vscode/

# CMake build
build/
203 changes: 203 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
cmake_minimum_required(VERSION 3.21)
project(qlcplus VERSION 4.12.8 LANGUAGES C CXX)

# Set Release build type by default
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
endif()

# Prevent CMake make install strips off non-standard build paths
# Refer to https://stackoverflow.com/questions/7970544/cmake-make-install-output-cant-find-shared-qt-libraries-under-redhat
SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

SET(INSTALL_ROOT "/" CACHE STRING "Installation root directory")

if(UNIX)
if (APPLE)
set(iokit ON)
else()
set(udev ON)
endif()
endif()

set(CMAKE_INCLUDE_CURRENT_DIR ON)

# Set up AUTOMOC and some sensible defaults for runtime execution
# When using Qt 6.3, you can replace the code block below with
# qt_standard_project_setup()
set(CMAKE_AUTOMOC ON)
include(GNUInstallDirs)

find_package(QT NAMES Qt5 Qt6 REQUIRED COMPONENTS Core)
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS 3DCore 3DInput 3DQuick 3DQuickExtras 3DRender Gui Multimedia MultimediaWidgets Network PrintSupport Qml Quick Svg Test Widgets LinguistTools)

message("Found Qt version ${QT_VERSION_MAJOR}: ${QT_DIR}")

if(QT_VERSION_MAJOR EQUAL 5)
find_package(Qt${QT_VERSION_MAJOR} OPTIONAL_COMPONENTS Script)
endif()

find_package(PkgConfig REQUIRED)

include(./variables.cmake)
include(./coverage.cmake)

if((((QT_VERSION_MAJOR LESS 5)) AND (APPLE)))
pkg_check_modules(PORTAUDIO_2 IMPORTED_TARGET portaudio-2.0)
endif()

if(WIN32)
# Prefix all shared libraries with ''.
set(CMAKE_SHARED_LIBRARY_PREFIX "")
endif()

add_subdirectory(hotplugmonitor)
add_subdirectory(engine)
add_subdirectory(resources)
add_subdirectory(plugins)
if(qmlui)
message("Building QLC+ 5 QML UI")
add_subdirectory(qmlui)
else()
message("Building QLC+ 4 QtWidget UI")
add_subdirectory(ui)
add_subdirectory(webaccess)
add_subdirectory(main)
add_subdirectory(fixtureeditor)
endif()
if(APPLE AND NOT qmlui)
add_subdirectory(launcher)
endif()

# Unit testing thru "make check"
if(qmlui)
if(WIN32)
add_custom_target(unittests
COMMAND unittest_cmake.bat "qmlui" ${CMAKE_CURRENT_BINARY_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
else()
add_custom_target(unittests
COMMAND ./unittest_cmake.sh "qmlui" ${CMAKE_CURRENT_BINARY_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
endif()
else()
if(WIN32)
add_custom_target(unittests
COMMAND unittest_cmake.bat "ui" ${CMAKE_CURRENT_BINARY_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
else()
add_custom_target(unittests
COMMAND ./unittest_cmake.sh "ui" ${CMAKE_CURRENT_BINARY_DIR}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
endif()
endif()

add_custom_target(check
DEPENDS unittests
)

# Unit test coverage measurement
if(WIN32)
add_custom_target(coverage
COMMAND @echo Get a better OS.
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
else()
if(qmlui)
add_custom_target(coverage
COMMAND ./coverage_cmake.sh "qmlui"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
else()
add_custom_target(coverage
COMMAND ./coverage_cmake.sh "ui"
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
endif()
endif()

add_custom_target(lcov
DEPENDS coverage
)

# Translations
if (qmlui)
add_custom_target(translations ALL
COMMAND ./translate.sh "qmlui"
COMMENT "Translating qmlui translations..."
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
else ()
add_custom_target(translations ALL
COMMAND ./translate.sh "ui"
COMMENT "Translating ui translations..."
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif()

## Add the generated qm files to the list
file(GLOB translations_qm_files "${CMAKE_CURRENT_SOURCE_DIR}/*.qm")

## Install the qm files
if (appimage)
set(translations_install_path "${TARGET_DIR}/${INSTALLROOT}/${TRANSLATIONDIR}")
else ()
set(translations_install_path "${INSTALLROOT}/${TRANSLATIONDIR}")
endif()

install(FILES ${translations_qm_files} DESTINATION ${translations_install_path})

## Clean the generated files
set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES "${CMAKE_CURRENT_BINARY_DIR}/*.qm")

# run
if(UNIX)
if(qmlui)
add_custom_target(run
COMMAND ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH=engine/src:$ENV{LD_LIBRARY_PATH} qmlui/qlcplus-qml
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
else()
add_custom_target(run
COMMAND ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH=engine/src:ui/src:webaccess/src:$ENV{LD_LIBRARY_PATH} main/qlcplus
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
endif()
endif()

# run-fxe
if(UNIX AND NOT qmlui)
add_custom_target(run-fxe
COMMAND ${CMAKE_COMMAND} -E env LD_LIBRARY_PATH=engine/src:ui/src:webaccess/src:$ENV{LD_LIBRARY_PATH} ./fixtureeditor/qlcplus-fixtureeditor
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
)
endif()

# doxygen
if(UNIX)
add_custom_target(doxygen
COMMAND cd resources/doxygen && rm -rf html/ && doxygen qlcplus.dox
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
endif()

# uninstall target
if(NOT TARGET uninstall)
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
IMMEDIATE @ONLY)

add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)
endif()

SET(CPACK_GENERATOR "DEB")
set(CPACK_PACKAGE_NAME "qlcplus")
SET(CPACK_DEBIAN_PACKAGE_MAINTAINER "Massimo Callegari") #required
INCLUDE(CPack)

# Leave this on the last row of this file
add_subdirectory(platforms)
12 changes: 9 additions & 3 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,12 @@ install:
#- pacman --noconfirm -Sy
#- pacman --noconfirm --needed -S pacman-mirrors
- pacman --noconfirm -Syu
- wget https://mirror.msys2.org/mingw/mingw32/mingw-w64-i686-gcc-libs-13.1.0-7-any.pkg.tar.zst -P /c/projects
- wget https://mirror.msys2.org/mingw/mingw32/mingw-w64-i686-gcc-13.1.0-7-any.pkg.tar.zst -P /c/projects
- pacman --noconfirm -Rdd mingw-w64-i686-gcc
- pacman --noconfirm -Rdd mingw-w64-i686-gcc-libs
- pacman --noconfirm --needed -U /c/projects/mingw-w64-i686-gcc-libs-13.1.0-7-any.pkg.tar.zst
- pacman --noconfirm --needed -U /c/projects/mingw-w64-i686-gcc-13.1.0-7-any.pkg.tar.zst
- pacman --noconfirm --needed -Sy mingw32/mingw-w64-i686-libmad mingw32/mingw-w64-i686-libsndfile mingw32/mingw-w64-i686-flac mingw32/mingw-w64-i686-fftw mingw32/mingw-w64-i686-libusb
- pacman --noconfirm --needed -Sy mingw32/mingw-w64-i686-qt5 unzip mingw32/mingw-w64-i686-nsis

Expand All @@ -38,9 +44,9 @@ build_script:
gendef.exe - ftd2xx.dll > ftd2xx.def
dlltool -k --input-def ftd2xx.def --dllname ftd2xx.dll --output-lib libftd2xx.a
# patch Qt 5.15.x to build with GCC 12
cd /c/msys64/mingw32/include/
sed -i -e 's/friend Q_CORE_EXPORT uint qHash/\/\/friend Q_CORE_EXPORT uint qHash/g' QtCore/qbitarray.h
sed -i -e 's/friend Q_NETWORK_EXPORT bool operator==/\/\/friend Q_NETWORK_EXPORT bool operator==/g' QtNetwork/qssldiffiehellmanparameters.h
#cd /c/msys64/mingw32/include/
#sed -i -e 's/friend Q_CORE_EXPORT uint qHash/\/\/friend Q_CORE_EXPORT uint qHash/g' QtCore/qbitarray.h
#sed -i -e 's/friend Q_NETWORK_EXPORT bool operator==/\/\/friend Q_NETWORK_EXPORT bool operator==/g' QtNetwork/qssldiffiehellmanparameters.h
cd /c/projects/qlcplus
sed -i -e 's/QMAKE_CXXFLAGS += -Werror/QMAKE_CXXFLAGS += -Werror -Wno-error=attributes/g' variables.pri
# disable the test units, since we won't run them
Expand Down