Skip to content

Commit b028c09

Browse files
NathanW2m-kuhn
authored andcommitted
[build] Add better support for Ninja build system
1 parent 6207412 commit b028c09

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

CMakeLists.txt

+12-2
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ IF (MSVC AND CMAKE_GENERATOR MATCHES "NMake")
150150
SET (USING_NMAKE TRUE)
151151
ENDIF (MSVC AND CMAKE_GENERATOR MATCHES "NMake")
152152

153+
IF (MSVC AND CMAKE_GENERATOR MATCHES "Ninja")
154+
# following variable is also used in qgsconfig.h
155+
SET (USING_NINJA TRUE)
156+
ENDIF (MSVC AND CMAKE_GENERATOR MATCHES "Ninja")
157+
153158
#############################################################
154159
# check if lexer and parser are not missing
155160
# http://www.mail-archive.com/cmake@cmake.org/msg02861.html
@@ -748,10 +753,15 @@ IF (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
748753
FIND_PROGRAM(GITCOMMAND git PATHS c:/cygwin/bin)
749754
IF(GITCOMMAND)
750755
IF(WIN32)
756+
IF(USING_NINJA)
757+
SET(ARG %a)
758+
ELSE(USING_NINJA)
759+
SET(ARG %%a)
760+
ENDIF(USING_NINJA)
751761
ADD_CUSTOM_COMMAND(
752762
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h ${CMAKE_CURRENT_BINARY_DIR}/qgsversion.inc
753-
COMMAND for /f \"usebackq tokens=1\" %%a in "(`\"${GITCOMMAND}\" log -n1 --oneline`)" do echo \#define QGSVERSION \"%%a\" >${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h.temp
754-
COMMAND for /f \"usebackq tokens=1\" %%a in "(`\"${GITCOMMAND}\" log -n1 --oneline`)" do echo PROJECT_NUMBER = \"${COMPLETE_VERSION}-${RELEASE_NAME} \(%%a\)\" >${CMAKE_CURRENT_BINARY_DIR}/qgsversion.inc
763+
COMMAND for /f \"usebackq tokens=1\" ${ARG} in "(`\"${GITCOMMAND}\" log -n1 --oneline`)" do echo \#define QGSVERSION \"${ARG}\" >${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h.temp
764+
COMMAND for /f \"usebackq tokens=1\" ${ARG} in "(`\"${GITCOMMAND}\" log -n1 --oneline`)" do echo PROJECT_NUMBER = \"${COMPLETE_VERSION}-${RELEASE_NAME} \(${ARG}\)\" >${CMAKE_CURRENT_BINARY_DIR}/qgsversion.inc
755765
COMMAND ${CMAKE_COMMAND} -DSRC=${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h.temp -DDST=${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h -P ${CMAKE_SOURCE_DIR}/cmake/CopyIfChanged.cmake
756766
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/.git/index
757767
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}

cmake/PyQtMacros.cmake

+7-2
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,13 @@ ENDIF(NOT PYUIC_PROGRAM)
3232
# Adapted from QT4_WRAP_UI
3333
MACRO(PYQT_WRAP_UI outfiles )
3434
IF(WIN32)
35-
SET(PYUIC_WRAPPER "${CMAKE_SOURCE_DIR}/scripts/pyuic-wrapper.bat")
36-
SET(PYUIC_WRAPPER_PATH "${QGIS_OUTPUT_DIRECTORY}/bin/${CMAKE_BUILD_TYPE}")
35+
IF(USING_NINJA OR USING_NMAKE)
36+
SET(PYUIC_WRAPPER "${CMAKE_SOURCE_DIR}/scripts/pyuic-wrapper.bat")
37+
SET(PYUIC_WRAPPER_PATH "${QGIS_OUTPUT_DIRECTORY}/bin")
38+
ELSE(USING_NINJA OR USING_NMAKE)
39+
SET(PYUIC_WRAPPER "${CMAKE_SOURCE_DIR}/scripts/pyuic-wrapper.bat")
40+
SET(PYUIC_WRAPPER_PATH "${QGIS_OUTPUT_DIRECTORY}/bin/${CMAKE_BUILD_TYPE}")
41+
ENDIF(USING_NINJA OR USING_NMAKE)
3742
ELSE(WIN32)
3843
# TODO osx
3944
SET(PYUIC_WRAPPER "${CMAKE_SOURCE_DIR}/scripts/pyuic-wrapper.sh")

src/core/CMakeLists.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -359,7 +359,9 @@ SET(QGIS_CORE_SRCS
359359

360360

361361
FILE(GLOB JSON_HELP_FILES "${CMAKE_SOURCE_DIR}/resources/function_help/json/*")
362-
STRING(REPLACE "$" "$$" JSON_HELP_FILES "${JSON_HELP_FILES}")
362+
IF(NOT USING_NINJA)
363+
STRING(REPLACE "$" "$$" JSON_HELP_FILES "${JSON_HELP_FILES}")
364+
ENDIF(NOT USING_NINJA)
363365
STRING(REPLACE "\(" "\\(" JSON_HELP_FILES "${JSON_HELP_FILES}")
364366
STRING(REPLACE "\)" "\\)" JSON_HELP_FILES "${JSON_HELP_FILES}")
365367
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/qgsexpression_texts.cpp

src/core/qgsapplication.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -153,14 +153,14 @@ void QgsApplication::init( QString customConfigPath )
153153
{
154154
// we run from source directory - not installed to destination (specified prefix)
155155
ABISYM( mPrefixPath ) = QString(); // set invalid path
156-
#if defined(_MSC_VER) && !defined(USING_NMAKE)
156+
#if defined(_MSC_VER) && !defined(USING_NMAKE) && !defined(USING_NINJA)
157157
setPluginPath( ABISYM( mBuildOutputPath ) + '/' + QString( QGIS_PLUGIN_SUBDIR ) + '/' + ABISYM( mCfgIntDir ) );
158158
#else
159159
setPluginPath( ABISYM( mBuildOutputPath ) + '/' + QString( QGIS_PLUGIN_SUBDIR ) );
160160
#endif
161161
setPkgDataPath( ABISYM( mBuildSourcePath ) ); // directly source path - used for: doc, resources, svg
162162
ABISYM( mLibraryPath ) = ABISYM( mBuildOutputPath ) + '/' + QGIS_LIB_SUBDIR + '/';
163-
#if defined(_MSC_VER) && !defined(USING_NMAKE)
163+
#if defined(_MSC_VER) && !defined(USING_NMAKE) && !defined(USING_NINJA)
164164
ABISYM( mLibexecPath ) = ABISYM( mBuildOutputPath ) + '/' + QGIS_LIBEXEC_SUBDIR + '/' + ABISYM( mCfgIntDir ) + '/';
165165
#else
166166
ABISYM( mLibexecPath ) = ABISYM( mBuildOutputPath ) + '/' + QGIS_LIBEXEC_SUBDIR + '/';

0 commit comments

Comments
 (0)