Skip to content

Commit 4648143

Browse files
NathanW2m-kuhn
authored andcommitted
[build] Add better support for Ninja build system
1 parent 882cd7b commit 4648143

File tree

4 files changed

+25
-7
lines changed

4 files changed

+25
-7
lines changed

CMakeLists.txt

+13-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
@@ -740,9 +745,15 @@ IF (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
740745
FIND_PROGRAM(GITCOMMAND git PATHS c:/cygwin/bin)
741746
IF(GITCOMMAND)
742747
IF(WIN32)
748+
IF(USING_NINJA)
749+
SET(ARG %a)
750+
ELSE(USING_NINJA)
751+
SET(ARG %%a)
752+
ENDIF(USING_NINJA)
743753
ADD_CUSTOM_COMMAND(
744-
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h
745-
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+
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h ${CMAKE_CURRENT_BINARY_DIR}/qgsversion.inc
755+
COMMAND for /f \"usebackq tokens=1\" ${ARG} in "(`\"${GITCOMMAND}\" log -n1 --oneline`)" do echo \#define QGSVERSION \"${ARG}\" >${CMAKE_CURRENT_BINARY_DIR}/qgsversion.h.temp
756+
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
746757
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
747758
MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/.git/index
748759
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_PROG_NAME}-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/pyuic4-wrapper.sh")

src/core/CMakeLists.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -342,7 +342,9 @@ SET(QGIS_CORE_SRCS
342342
)
343343

344344
FILE(GLOB JSON_HELP_FILES "${CMAKE_SOURCE_DIR}/resources/function_help/json/*")
345-
STRING(REPLACE "$" "$$" JSON_HELP_FILES "${JSON_HELP_FILES}")
345+
IF(NOT USING_NINJA)
346+
STRING(REPLACE "$" "$$" JSON_HELP_FILES "${JSON_HELP_FILES}")
347+
ENDIF(NOT USING_NINJA)
346348
STRING(REPLACE "\(" "\\(" JSON_HELP_FILES "${JSON_HELP_FILES}")
347349
STRING(REPLACE "\)" "\\)" JSON_HELP_FILES "${JSON_HELP_FILES}")
348350
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_CURRENT_SOURCE_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)