[Qt-creator] Project-specific make tool
Daniel Teske
daniel.teske at digia.com
Wed Mar 12 16:13:27 CET 2014
On Wednesday 12 Mar 2014 15:54:45 Stephen Kelly wrote:
> Daniel Teske wrote:
> >> So, if the makefiles cause cmake to run any part of the build, it will
> >> use nmake. Creator expects jom to be used. The solution is to tell cmake
> >> to use jom.
> >
> > Can you demonstrate this in a example? We don't expect cmake to run make
> > for us, and other things would break if cmake does that.
>
> It would be user code that would cause it I think.
>
> 1) User code can invoke
>
> "${CMAKE_COMMAND} --build ${somedir}"
>
> There is a built-in command for creating such command lines too:
>
> http://www.cmake.org/cmake/help/v3.0/command/build_command.html
>
> It's not the wrong thing to do for non-trivial user buildsystems.
>
> 2) Code which runs a build will use the CMAKE_MAKE_PROGRAM:
>
> include(CTest)
>
> add_test(someproj_test ${CMAKE_CTEST_COMMAND}
> --build-and-test "${CMAKE_CURRENT_SOURCE_DIR}/subproj"
> "${CMAKE_CURRENT_BINARY_DIR}/subproj"
> --build-generator "${CMAKE_GENERATOR}"
> --build-makeprogram "${CMAKE_MAKE_PROGRAM}"
> --build-project "subproj"
> )
>
> This is done in CMake
>
> http://cmake.org/gitweb?p=cmake.git;a=blob;f=Tests/CMakeLists.txt;h=726e790
> 2#l6
>
> and in Qt
>
> https://qt.gitorious.org/qt/qtbase/source/3683bc97d:mkspecs/features/ctest_
> testcase_common.prf#L86
>
> 3) The ExternalProject module has special handling for makefile generators
> and seems to use $(MAKE), which seems to mean that jom is used to build
> external projects, so that's good.
>
> include(ExternalProject)
> ExternalProject_Add(subproj
> SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/subproj"
> INSTALL_COMMAND ""
> )
>
> 4) Any try_compile will use nmake, even though the main build uses jom:
>
> add_library(cmaketest lib.cpp)
>
> file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/tc_code.cpp" "
> int main(int argc, char** argv)
> {
> return 0;
> }
> ")
> try_compile(tc_result "${CMAKE_CURRENT_BINARY_DIR}/tc_code"
> "${CMAKE_CURRENT_BINARY_DIR}/tc_code.cpp"
> OUTPUT_VARIABLE tc_out
> )
> message("TC###########################\n${tc_out}")
>
>
>
> These are probably not cases which will cause breakage anywhere, but I don't
> see any reason *not* to tell cmake which build tool to use.
Then create a patch.
daniel
More information about the Qt-creator
mailing list