Giter VIP home page Giter VIP logo

Comments (9)

nmlt avatar nmlt commented on August 22, 2024

I think the author explains here how to circumvent this problem: https://stackoverflow.com/a/4318642/15282333

Although I haven't been able to get it to work with my setup yet.

from cmake-modules.

rpavlik avatar rpavlik commented on August 22, 2024

I'm not sure why that's happening, but I haven't added a definition in that way before. I typically use it to generate a source file instead, which does successfully avoid a full recompile on every build.

from cmake-modules.

bwrsandman avatar bwrsandman commented on August 22, 2024

The stack overflow option uses a configure file command which would only be run at configuration time. This is undesirable because it would not update GitSHA1.cpp at build time like it does in my example. You would have to reconfigure your project every time you make a commit which is even worse.

from cmake-modules.

rpavlik avatar rpavlik commented on August 22, 2024

well, any of the options using this module re-configure every time, that's more or less the key feature of this module? (that it triggers a re-configure on commit) If you just want to have it at build time, I guess you could call some of the functions from an add_custom_command()

from cmake-modules.

bwrsandman avatar bwrsandman commented on August 22, 2024

Fair enough, however this is just a way to do the same without using template files. It should also be constrained to that one file thus not cause any other files to require rebuilding.

set_property(
  SOURCE ${CMAKE_CURRENT_LIST_DIR}/GitSHA1.cpp
  PROPERTY COMPILE_DEFINITIONS
    "GIT_SHA1=\"${GIT_SHA1}\""
)

from cmake-modules.

rpavlik avatar rpavlik commented on August 22, 2024

I'm pretty sure this is not an issue with this module, but something with how you're using CMake. I agree that doesn't look like it should cause other rebuilds (though it will require and trigger reconfig), but it's not a use pattern I'm familiar with.

I'd happily review a suggested change to fix this, if it is in fact an issue with the module.

from cmake-modules.

bwrsandman avatar bwrsandman commented on August 22, 2024

I'll come up with a repro case with both ways. If it is indeed my usage I'll close.

from cmake-modules.

bwrsandman avatar bwrsandman commented on August 22, 2024

Really looks like it's related to set_property(SOURCE ... PROPERTY COMPILE_DEFINITIONS)
It's really disappointing that cmake forces a whole recompile if a compile definition changes on a single cpp file.

from cmake-modules.

rpavlik avatar rpavlik commented on August 22, 2024

Yeah that sounds like it's probably a cmake bug, recommend reporting

from cmake-modules.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.