[cmake-developers] -GNinja on Windows
Peter Kümmel
syntheticpp at gmx.net
Sat Jun 9 04:25:00 EDT 2012
On 09.06.2012 10:02, Claus Klein wrote:
> Hi Peter,
>
> I agree, we need your/our changes at upstream!
>
> I will switch to our github:
>
> https://github.com/syntheticpp/ninja
>
In times of git there is no "our repository" any more.
You could simply fork martine/ninja and push you changes
into your fork. Then, when you think something should go
upstream, create a merge request.
You could track multiple repositories by using git remote,
for instance in my cmake dir it looks like this:
$ git remote -v
origin git://cmake.org/cmake.git (fetch)
origin git://cmake.org/cmake.git (push)
pcc https://github.com/pcc/CMake.git (fetch)
pcc https://github.com/pcc/CMake.git (push)
polrop https://github.com/polrop/CMake.git (fetch)
polrop https://github.com/polrop/CMake.git (push)
stage git at cmake.org:stage/cmake.git (fetch)
stage git at cmake.org:stage/cmake.git (push)
steveires git://gitorious.org/~steveire/cmake/steveires-cmake.git (fetch)
steveires git://gitorious.org/~steveire/cmake/steveires-cmake.git (push)
syntheticpp git at github.com:syntheticpp/CMake.git (fetch)
syntheticpp git at github.com:syntheticpp/CMake.git (push)
>
> On little more about ninja bootstrap:
> Original bootstrap.py generated target rule:
> ninja -t clean
> does a really distclean. The re2c generted files are removed too!
Yes, you have to checkout again. When you don't have changes "checkout -f"
is the fasted way.
>
> To be save, I added a rule to build/update them if needed:
Mostly I use my cmake file. Their python scripts are a bit sub-optimal.
>
> #####################################
> set (RE2C_FOUND FALSE)
> find_program (RE2C_EXECUTABLE "re2c")
> if (RE2C_EXECUTABLE)
> set (RE2C_FOUND TRUE)
> set (RE2C_FLAGS -b -i --no-generation-date)
>
> # build src/depfile_parser.cc: re2c src/depfile_parser.in.cc
> # build src/lexer.cc: re2c src/lexer.in.cc
> foreach(_in depfile_parser.in.cc lexer.in.cc)
> string(REGEX REPLACE ".in.cc" ".cc" _out "${_in}")
> message(STATUS "Generate re2c src/${_in} -o src/${_out}")
>
> # CMake atrocity: if none of these OUTPUT files is used in a target in
> # the current CMakeLists.txt file, the ADD_CUSTOM_COMMAND is plainly
> # ignored and left out of the make files.
> add_custom_command(OUTPUT ${srcdir}/${_out}
> COMMAND ${RE2C_EXECUTABLE} ${${RE2C_FLAGS}} -o ${srcdir}/${_out} ${srcdir}/${_in}
> DEPENDS ${srcdir}/${_in}
> )
> endforeach()
> endif (RE2C_EXECUTABLE)
> ########################################
>
> claus-kleins-macbook-pro:build clausklein$ ninja -d explain
> ninja: no work to do.
> claus-kleins-macbook-pro:build clausklein$ touch ../src/lexer.in.cc
> claus-kleins-macbook-pro:build clausklein$ ninja -d explain
> ninja explain: restat of output ../src/lexer.cc older than inputs
> ninja explain: ../src/lexer.cc is dirty
> ninja explain: ../src/lexer.cc is dirty
> ninja explain: CMakeFiles/ninja_lib.dir/src/lexer.cc.o is dirty
> ninja explain: libninja_lib.a is dirty
> ninja explain: ninja is dirty
> ninja explain: libninja_lib.a is dirty
> [4/4] Linking CXX executable ninja
> claus-kleins-macbook-pro:build clausklein$
>
> //Regards
> Claus
>
Nice, never tried -d explain.
Peter
More information about the cmake-developers
mailing list