Comments (9)
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.
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.
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.
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.
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.
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.
I'll come up with a repro case with both ways. If it is indeed my usage I'll close.
from cmake-modules.
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.
Yeah that sounds like it's probably a cmake bug, recommend reporting
from cmake-modules.
Related Issues (20)
- git_describe() and --dirty HOT 10
- git_get_exact_tag and new tags HOT 2
- find_package(Markdown) finding some file on Windows but not able to execute it HOT 3
- cppcheck target source language check should accept C as well CXX
- git revision description only trigger rebuild of one file HOT 1
- get_git_head_revision doesn't work from submodule HOT 1
- FindNSS and FindNSPR? HOT 2
- GetGitRevisionDescription: git_local_changes() returns false positive when repo. source file touched HOT 1
- Conan module HOT 1
- Document how to use GetGitRevisionDescription "offline" HOT 3
- Option to prevent get_git_head_revision from traversing parent directories HOT 10
- Question on get git revision description HOT 2
- FindOpenSceneGraph.cmake fails to get the version from OpenSceneGraph 3.6 HOT 1
- wishlist: get git revision of other folders HOT 1
- Wishlist: Document CMakeLists into Doxygen page
- get_git_head_revision() fails due to unfound git
- Support to find SDL2 installed by vcpkg on Windows HOT 1
- update-modules.sh should use same path for file check and copy
- `get_git_head_revision` does not work on submodule HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cmake-modules.