-
Notifications
You must be signed in to change notification settings - Fork 131
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
Enable Qt framework in CI #140
Conversation
CMakeLists.txt
Outdated
@@ -13,7 +13,9 @@ set(CUKE_ENABLE_EXAMPLES OFF CACHE BOOL "Enable the examples") | |||
set(GMOCK_SRC_DIR "" CACHE STRING "Google Mock framework sources path (otherwise downloaded)") | |||
set(GMOCK_VER "1.7.0" CACHE STRING "Google Mock framework version to be used") | |||
option(VALGRIND_TESTS "Run tests within Valgrind" OFF) | |||
set(CUKE_DISABLE_QT OFF CACHE BOOL "Disable using Qt framework") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For boolean parameters I recommend using option
instead (it's intended to give user options and only supports booleans).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll change it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In fact I've changed all BOOLs to options - how do you feel about that?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sounds good 👍
CMakeLists.txt
Outdated
|
||
set(ignoreMe "${QT_QMAKE_EXECUTABLE}") #supress warning |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What warning are you suppressing?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Something like Not used variable passed to CMake, and this variable is needed for appveyor CI
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think it's a good idea to silence that warning. Because when it gives that warning the parameter you passed on the command line actually isn't used. If that's okay under some circumstances then I would just allow the warning to be displayed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See my comment about adding %QT_DIR%
to CMAKE_PREFIX_PATH
in appveyor.bat
: I don't think you need to set this variable at all. So please remove this line.
CMakeLists.txt
Outdated
|
||
if(${Qt5Core_FOUND} AND ${Qt5Widgets_FOUND} AND ${Qt5Test_FOUND}) | ||
message(STATUS "Found Qt version: ${Qt5Core_VERSION_STRING}") | ||
include_directories(${Qt5Core_INCLUDE_DIRS} ${Qt5Widgets_INCLUDE_DIRS} ${Qt5Test_INCLUDE_DIRS}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please don't add these to the global search path. Instead use target_include_directories(${target} <PRIVATE|PUBLIC> ${dirs})
for the targets that need it.
Or better yet, only use target_link_libraries(${target} <PRIVATE|PUBLIC> Qt5::${required_component})
because that already sets up the include path correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
done :) Didn't know that link_libraries also setup includes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It propagates all properties that have INTERFACE in the name (and when the linked library is a STATIC library also LINK_LIBRARIES
). This is nice because it allows you to specify all usage requirements of a target and have CMake do all the work of ensuring those are met in other targets that use that one.
.travis.yml
Outdated
|
||
before_install: | ||
- if [[ "${TRAVIS_OS_NAME}" = "osx" ]]; then brew update && brew install ninja; fi | ||
- if [[ "${TRAVIS_OS_NAME}" = "osx" ]]; then brew update && brew install ninja && brew install qt5; fi |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Question: doesn't brew support installing multiple packages at once? E.g. brew install ninja qt5
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done
CMakeLists.txt
Outdated
|
||
if(NOT CUKE_DISABLE_QT) | ||
set(CMAKE_PREFIX_PATH $ENV{QTDIR}) | ||
find_package(Qt5Core QUIET) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why do you search QUIET
for these packages? I think it's rather helpful to have the output of these searches shown on the console.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wasn't sure how to do it, becouse if finding qt5 failed i'm searching for qt4 which is sufficient for the examples. REQUIRED would fail the configuration. Mabey I'll go without quiet
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You don't have to specify either one of those. I.e. just this should work:
find_package(Qt5Core)
CMakeLists.txt
Outdated
if(${Qt5Core_FOUND}) | ||
find_program(QMAKE_EXECUTABLE NAMES qmake HINTS ${QTDIR} ENV QTDIR PATH_SUFFIXES bin) | ||
execute_process(COMMAND ${QMAKE_EXECUTABLE} -query QT_VERSION OUTPUT_VARIABLE QT_VERSION) | ||
if(QT_VERSION GREATER 5.6.99) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please use this instead:
if(NOT QT_VERSION VERSION_LESS 5.7)
That does a proper lexicographic comparison of the version number.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Done - one more thing I've learned today about cmake.
CMakeLists.txt
Outdated
@@ -222,4 +249,16 @@ endif() | |||
|
|||
if(CUKE_ENABLE_EXAMPLES) | |||
add_subdirectory(examples) | |||
|
|||
#check if c++11 is nedded |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typo: "needed"
CMakeLists.txt
Outdated
#check if c++11 is nedded | ||
if(${Qt5Core_FOUND}) | ||
find_program(QMAKE_EXECUTABLE NAMES qmake HINTS ${QTDIR} ENV QTDIR PATH_SUFFIXES bin) | ||
execute_process(COMMAND ${QMAKE_EXECUTABLE} -query QT_VERSION OUTPUT_VARIABLE QT_VERSION) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can't you just use Qt5Core_VERSION_STRING
instead?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll check
I've also updated CMake minimium version as @muggenhor in #142 seems to agree that it is needed |
Ack. 3.0+ is needed to have |
Should I change anything else? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I just have a few more questions and found two definitive problems (overriding CMAKE_PREFIX_PATH
and missing CXX_STANDARD_REQUIRED
).
.travis.yml
Outdated
compiler: gcc #does anyone on osx use it? | ||
- os: linux | ||
compiler: gcc | ||
env: GMOCK_VER=1.8.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are you excluding this configuration?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought it wasn't necessary as gmock 1.8 is used for the valgrind build. Reverted it now.
CMakeLists.txt
Outdated
# | ||
|
||
if(NOT CUKE_DISABLE_QT) | ||
set(CMAKE_PREFIX_PATH $ENV{QTDIR}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm assuming you're doing this to be able to use the QTDIR
environment variable you've set in .travis.yml
for OSX? Could you instead alter travis.sh
to pass this variable via the command-line to cmake?
Because right now you're unconditionally overruling this when a user has gone through the effort of setting it via the command line.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll try, but I'm not sure how it should be done - via -D switch?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the approach you've taken in travis.sh
now is what I meant.
CMakeLists.txt
Outdated
if(NOT ${Qt5Core_VERSION_STRING} VERSION_LESS 5.7) | ||
message(STATUS "C++11 is needed from Qt version 5.7.0, building with c++11 enabled") | ||
set_property(TARGET libcalcqt PROPERTY CXX_STANDARD 11) | ||
set_property(TARGET calcqt PROPERTY CXX_STANDARD 11) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will just ask CMake to use that standard if possible, but won't make it fail if it cannot. So please do this instead (set_target_properties
allows setting multiple properties for multiple targets in one call):
set_target_properties(libcalcqt calcqt
PROPERTIES
CXX_STANDARD 11
CXX_STANDARD_REQUIRED ON
)
See CXX_STANDARD_REQUIRED for more details.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok - didn't know that
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No worries, I had to discover this the hard way myself. Unfortunately CMake's documentation is more of a reference manual than a usage manual.
CMakeLists.txt
Outdated
if(${Qt5Core_FOUND} AND ${Qt5Widgets_FOUND} AND ${Qt5Test_FOUND}) | ||
message(STATUS "Found Qt version: ${Qt5Core_VERSION_STRING}") | ||
if (Qt5_POSITION_INDEPENDENT_CODE) | ||
SET(CMAKE_POSITION_INDEPENDENT_CODE ON) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you explain why this is necessary?
And if it is, please limit yourself to setting the POSITION_INDEPENDENT_CODE
target property for only those targets that need it: your current approach will set it for everything, including executables, which I doubt need it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, it is indeed not needed for this PR. PIC will be required by Qt test driver, i.e. another PR. I'll revert it here.
CMakeLists.txt
Outdated
#check if c++11 is needed | ||
if(${Qt5Core_FOUND}) | ||
# find_program(QMAKE_EXECUTABLE NAMES qmake HINTS ${QTDIR} ENV QTDIR PATH_SUFFIXES bin) | ||
# execute_process(COMMAND ${QMAKE_EXECUTABLE} -query QT_VERSION OUTPUT_VARIABLE QT_VERSION) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
don't add commented out code
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok - done
appveyor.bat
Outdated
@@ -0,0 +1,20 @@ | |||
set PATH=C:\Ruby200\bin;%BOOST_LIBRARYDIR%;%PATH% | |||
if defined MINGW_ROOT set PATH=%MINGW_ROOT%\bin;C:\msys64\usr\bin\;%PATH% | |||
if defined QT_DIR set PATH=%QT_DIR%\bin;%PATH% |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it might make more sense to add %QT_DIR%
to CMAKE_PREFIX_PATH
. That should also remove the need for manually specifying QT_QMAKE_EXECUTABLE
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, I'll check it
examples/CalcQt/CMakeLists.txt
Outdated
else() | ||
qt5_wrap_cpp(CALCQT_MOC ${CALCQT_HEADERS}) | ||
endif() | ||
add_library(libcalcqt src/CalculatorWidget.cpp ${CALCQT_MOC}) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you can just use AUTOMOC
here and get rid of the qtX_wrap_cpp
stuff altogether.
PS: this is a change that's fine not to do too as well if it's too much effort. It can be done separately at another time too.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I thought you would like such self-contined implementation better. Automoc is fine by me :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks :-)
@konserw have you looked at my questions? |
@muggenhor - to be honest I just forgot about all that. Now I have just pushed changes to address outlined issues. I hope CI will be green 🤞 |
It was all green so I've rebased against master |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice work, it looks really clean now. Just a few small things left.
appveyor.bat
Outdated
@@ -0,0 +1,20 @@ | |||
set PATH=C:\Ruby200\bin;%BOOST_LIBRARYDIR%;%PATH% | |||
if defined MINGW_ROOT set PATH=%MINGW_ROOT%\bin;C:\msys64\usr\bin\;%PATH% | |||
REM if defined QT_DIR set PATH=%QT_DIR%\bin;%PATH% |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please remove this commented out code
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Missed that one :)
appveyor.bat
Outdated
if defined MINGW_ROOT set PATH=%MINGW_ROOT%\bin;C:\msys64\usr\bin\;%PATH% | ||
REM if defined QT_DIR set PATH=%QT_DIR%\bin;%PATH% | ||
if "%CMAKE_GENERATOR%"=="NMake Makefiles" call "%VS140COMNTOOLS%\..\..\VC\vcvarsall.bat" %PLATFORM% | ||
echo %PATH% |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like left-over printf-style debugging code, please remove it.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
of course
appveyor.yml
Outdated
- set PATH=C:\Ruby%RUBY_VERSION%\bin;%BOOST_LIBRARYDIR%;%PATH% | ||
- gem install bundle | ||
- bundle install | ||
- bundle env |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't see bundle env
reappearing in appveyor.bat
. Why is that?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it is as much debugging by print as echo %path%. This is what it looks like on my machine:
$ bundle env
Environment
Bundler 1.15.3
Rubygems 2.6.11
Ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
Git 2.14.1
Platform x86_64-linux
OpenSSL OpenSSL 1.1.0e 16 Feb 2017
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Okay, removing it is fine then.
examples/CalcQt/CMakeLists.txt
Outdated
|
||
add_library(libcalcqt src/CalculatorWidget.cpp ${CALCQT_HEADERS}) | ||
if(QT_LIBRARIES) | ||
add_library(libcalcqt src/CalculatorWidget.cpp) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm expecting src/CalculatorWidget.h
to be present here as well. Does automoc work without specifying the header file to run Qt's moc on?
Also please remove the now unused CALCQT_HEADERS
variable.
MINGW_ARCH: x86_64 | ||
MSYSTEM: MINGW64 | ||
MINGW_ROOT: C:\msys64\mingw64 | ||
BOOST_ROOT: C:\msys64\mingw64 | ||
BOOST_LIBRARYDIR: C:\msys64\mingw64\lib | ||
BOOST_INCLUDEDIR: C:\msys64\mingw64\include\boost |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Shouldn't there be a QT_DIR
variable here (for 64-bit MinGW)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Appveyor has only 32-bit mingw-compiled qt libs preinstalled. https://www.appveyor.com/docs/build-environment/#qt
AFAIK it is not possible to link VC-compiled Qt with Mingw-compiled cucumber, or use 32-bit mingw-compiled lib.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for your explanation
@@ -1,36 +1,14 @@ | |||
project(CalcQt) | |||
|
|||
set(CALCQT_HEADERS src/CalculatorWidget.h) | |||
set(CALCQT_SOURCES src/CalcQt.cpp src/CalculatorWidget.cpp) | |||
include_directories(${CUKE_INCLUDE_DIRS} src) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like that you remove this global include_directories
but you should probably combine it with target_include_directories(libcalcqt PUBLIC src)
to fix the build errors you get.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thank you for pointing that - I haven't yet used target_include_directories
examples/CalcQt/CMakeLists.txt
Outdated
target_link_libraries(libcalcqt ${QT_LIBRARIES}) | ||
|
||
add_executable(calcqt ${CALCQT_SOURCES}) | ||
add_executable(calcqt src/CalcQt.cpp src/CalculatorWidget.h) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think you should be adding the CalculatorWidget.h
header file to this executable: it's logically part of the libcalcqt
library, not this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
of course - it's my mistake when cut-pasting ;)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good, with these last requested changes I'll merge it.
CMakeLists.txt
Outdated
endif() | ||
endif() | ||
if(QT_LIBRARIES) | ||
set(CMAKE_AUTOMOC ON) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Unfortunately this causes it to add a ton of extra files to compile (one for every target). Can you remove this and instead add this to examples/CalcQt/CMakeLists.txt
?
set_target_properties(libcalcqt PROPERTIES AUTOMOC ON)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And this is why I avoided automoc at first - didn't know it can be done with target property.
CMakeLists.txt
Outdated
if(${Qt5Core_FOUND}) | ||
if(NOT ${Qt5Core_VERSION_STRING} VERSION_LESS 5.7) | ||
message(STATUS "C++11 is needed from Qt version 5.7.0, building with c++11 enabled") | ||
set_target_properties(calcqt libcalcqt PROPERTIES |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking at the Qt5CoreConfigExtras.cmake
file in Qt 5.7.1 (as present on Debian stretch) this shouldn't be necessary because of this line:
set_property(TARGET Qt5::Core PROPERTY INTERFACE_COMPILE_FEATURES cxx_decltype)
That makes it a usage requirement (INTERFACE_\w+
are properties describing usage requirements automatically applied by CMake) to always compile this target with a compiler supporting decltype
, that means C++11 (or C++0x on some very old compilers, but if that's not enough then that entire compiler won't work anyway). So it should already automatically switch to using C++11 for every target that links to Qt5::Core
(via target_link_libraries
).
So please remove this entire block.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok
One problem, since you're changes to the AppVeyor config failures are no longer fatal (search for "undefined reference"): https://ci.appveyor.com/project/paoloambrosio/cucumber-cpp-qqrt7/build/master-ci-249/job/fxe93x2pmd8ewhlc |
I think this is caused by your move of the script to |
@muggenhor - I thought it was good idea to separate configuration from build script like we have done with travis. It just turned out badly with cmd instead of bash - merged it again - I hope it'll help. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'd appreciate it if you could logically group your changes, because right now you have cleanup, build system changes and CI config changes mixed together.
I have that, rebased to master, in this private branch muggenhor/pull-140-test. It's combined with the fixes suggested in this review. That has the advantage that everything except for the last commit in there could already be merged, because it's only the last commit (which only changes the CI config to actually use Qt) that breaks the build on AppVeyor. That last commit (muggenhor/cucumber-cpp@b2a0b0d78d4669e129f99179ab0efebea396980a) could even be split to have the Travis stuff first (which works) and the AppVeyor stuff last (which breaks only for MinGW + Qt). Feel free to use it, it's just your work separated into different commits.
|
||
set(ignoreMe "${QT_QMAKE_EXECUTABLE}") #supress warning |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please remove this line now
- if "%build%"=="mingw" set PATH=%MINGW_ROOT%\bin;C:\msys64\usr\bin\;%PATH% | ||
- if "%build%"=="mingw" bash -lc "pacman --needed --noconfirm -S mingw-w64-%MINGW_ARCH%-boost | ||
- call gem install bundle | ||
- call bundle install |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please don't shuffle the lines around (in comparison to master), that makes the diff unnecessarily large.
MINGW_ROOT: C:\msys64\mingw64 | ||
BOOST_ROOT: C:\msys64\mingw64 | ||
BOOST_LIBRARYDIR: C:\msys64\mingw64\lib | ||
BOOST_INCLUDEDIR: C:\msys64\mingw64\include\boost | ||
CMAKE_GENERATOR: 'MSYS Makefiles' | ||
- build: msvc | ||
- CMAKE_GENERATOR: 'NMake Makefiles' | ||
platform: x86 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How about renaming this to MSVC_ARCH
(similarly to MINGW_ARCH
)? Then you can change the if %CMAKE_GENERATOR% == NMake
check below to check for if defined MSVC_ARCH
just like the MinGW stuff.
@muggenhor - very nice work! Of course I agree with your review. And I think I've found solution to that failing build - it was order in which libraries were added for linking. I'll create new pull request based off your branch and close this one. |
Main purpose of this PR is to setup Qt framework in CI on all 3 platforms:
Rework of Qt-related code in CMake files was needed to prepare for QtTest driver and ensure that CalcQt can be build under all Qt versions.
I've also done some refactoring in appveyor configuration:
I've also changed how travis matrix is described in config but still build targets are the same. I hope now config is more clear.
Please leave a comment how you like those changes.