How can one scope the cmake project version? It appears the project version string is last-guy wins. Say I have top project CMakeLists.txt that sets version, then it includes some other component by via add_subdirectory, but this component will then override my project version.
There are multiple variables in CMake related to project versions:
- There’s
PROJECT_VERSION
, which refers to the version specified in the last calledproject()
command. I believe that’s what you’re referring to in your question. - There’s
{ProjectName}_VERSION
, where{ProjectName}
is a placeholder for the name of a project. This variable refers to the version specified in theproject(ProjectName)
call. - There’s
CMAKE_PROJECT_VERSION
, which refers to the version of the top-level (i.e. first)project()
call. This may be what you’re looking for.
All of these variables also have the variants _MAJOR
, _MINOR
, _PATCH
, and _TWEAK
for the individual version components. See the docs of the individual variables for more details.