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

Enable Qt framework in CI #140

Closed
wants to merge 5 commits into from
Closed

Conversation

konserw
Copy link
Contributor

@konserw konserw commented Mar 30, 2017

Main purpose of this PR is to setup Qt framework in CI on all 3 platforms:

  • Linux via apt
  • OSX via brew
  • Windows using preinstalled Qt in appveyor (only mingwx64 is missing on the image)
    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:
  • removed not used variables
  • moved build steps to batch file
  • ruby version is now hard coded instead of variable
    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.

This was referenced Mar 30, 2017
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")
Copy link
Contributor

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).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll change it

Copy link
Contributor Author

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?

Copy link
Contributor

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
Copy link
Contributor

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?

Copy link
Contributor Author

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

Copy link
Contributor

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.

Copy link
Contributor

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})
Copy link
Contributor

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.

Copy link
Contributor Author

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

Copy link
Contributor

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
Copy link
Contributor

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 ?

Copy link
Contributor Author

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)
Copy link
Contributor

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.

Copy link
Contributor Author

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

Copy link
Contributor

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)
Copy link
Contributor

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.

Copy link
Contributor Author

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
Copy link
Contributor

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)
Copy link
Contributor

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?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'll check

@konserw
Copy link
Contributor Author

konserw commented Mar 31, 2017

I've also updated CMake minimium version as @muggenhor in #142 seems to agree that it is needed

@muggenhor
Copy link
Contributor

@konserw:

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 find_dependency(), that is used by FindGMock.cmake. 3.1+ is needed to have the Threads package create the Threads::Threads IMPORT target.

@konserw
Copy link
Contributor Author

konserw commented Jun 3, 2017

Should I change anything else?

Copy link
Contributor

@muggenhor muggenhor left a 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
Copy link
Contributor

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?

Copy link
Contributor Author

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})
Copy link
Contributor

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.

Copy link
Contributor Author

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?

Copy link
Contributor

@muggenhor muggenhor Aug 15, 2017

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)
Copy link
Contributor

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.

Copy link
Contributor Author

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

Copy link
Contributor

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)
Copy link
Contributor

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.

Copy link
Contributor Author

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)
Copy link
Contributor

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

Copy link
Contributor Author

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%
Copy link
Contributor

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.

Copy link
Contributor Author

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

else()
qt5_wrap_cpp(CALCQT_MOC ${CALCQT_HEADERS})
endif()
add_library(libcalcqt src/CalculatorWidget.cpp ${CALCQT_MOC})
Copy link
Contributor

@muggenhor muggenhor Jun 3, 2017

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.

Copy link
Contributor Author

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 :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks :-)

@muggenhor muggenhor added build and removed feature labels Jun 3, 2017
@muggenhor muggenhor added this to the v0.4.1 milestone Jun 3, 2017
@muggenhor
Copy link
Contributor

@konserw have you looked at my questions?

@konserw
Copy link
Contributor Author

konserw commented Aug 13, 2017

@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 🤞

@konserw
Copy link
Contributor Author

konserw commented Aug 14, 2017

It was all green so I've rebased against master

Copy link
Contributor

@muggenhor muggenhor left a 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%
Copy link
Contributor

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

Copy link
Contributor Author

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%
Copy link
Contributor

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.

Copy link
Contributor Author

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
Copy link
Contributor

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?

Copy link
Contributor Author

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

Copy link
Contributor

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.


add_library(libcalcqt src/CalculatorWidget.cpp ${CALCQT_HEADERS})
if(QT_LIBRARIES)
add_library(libcalcqt src/CalculatorWidget.cpp)
Copy link
Contributor

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
Copy link
Contributor

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)?

Copy link
Contributor Author

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.

Copy link
Contributor

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)
Copy link
Contributor

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.

Copy link
Contributor Author

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

target_link_libraries(libcalcqt ${QT_LIBRARIES})

add_executable(calcqt ${CALCQT_SOURCES})
add_executable(calcqt src/CalcQt.cpp src/CalculatorWidget.h)
Copy link
Contributor

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.

Copy link
Contributor Author

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 ;)

Copy link
Contributor

@muggenhor muggenhor left a 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)
Copy link
Contributor

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)

Copy link
Contributor Author

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
Copy link
Contributor

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.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ok

@muggenhor
Copy link
Contributor

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

@muggenhor
Copy link
Contributor

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 appveyor.bat. Additionally that has the effect of no longer showing which command is being executed. Is there any particular reason why you've moved all this out of appveyor.yml and into the batch file?

@konserw
Copy link
Contributor Author

konserw commented Aug 16, 2017

@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.

Copy link
Contributor

@muggenhor muggenhor left a 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
Copy link
Contributor

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
Copy link
Contributor

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
Copy link
Contributor

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.

@konserw
Copy link
Contributor Author

konserw commented Aug 17, 2017

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants