diff --git a/.gitignore b/.gitignore index 6f9e65bc7..81d917298 100755 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # Custom files LocalConfig.cmake -src/colmap/util/version.h +src/colmap/util/version.cc # Custom directories .idea/ diff --git a/cmake/GenerateVersionDefinitions.cmake b/cmake/GenerateVersionDefinitions.cmake index afb370d4e..562b797ae 100644 --- a/cmake/GenerateVersionDefinitions.cmake +++ b/cmake/GenerateVersionDefinitions.cmake @@ -49,5 +49,5 @@ else() set(GIT_COMMIT_DATE "Unknown") endif() -configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/colmap/util/version.h.in" - "${CMAKE_CURRENT_SOURCE_DIR}/src/colmap/util/version.h") +configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/colmap/util/version.cc.in" + "${CMAKE_CURRENT_SOURCE_DIR}/src/colmap/util/version.cc") diff --git a/src/colmap/scene/database.cc b/src/colmap/scene/database.cc index 3ecc02bc5..c962c78b0 100644 --- a/src/colmap/scene/database.cc +++ b/src/colmap/scene/database.cc @@ -1413,7 +1413,7 @@ void Database::UpdateSchema() const { // Update user version number. std::unique_lock lock(update_schema_mutex_); const std::string update_user_version_sql = - StringPrintf("PRAGMA user_version = %d;", COLMAP_VERSION_NUMBER); + StringPrintf("PRAGMA user_version = %d;", GetVersionNumber()); SQLITE3_EXEC(database_, update_user_version_sql.c_str(), nullptr); } diff --git a/src/colmap/util/version.cc b/src/colmap/util/version.cc index 9720b9501..7ec4a702f 100644 --- a/src/colmap/util/version.cc +++ b/src/colmap/util/version.cc @@ -31,7 +31,19 @@ #include "colmap/util/version.h" +#include "colmap/util/misc.h" + namespace colmap { +namespace { + +const std::string COLMAP_VERSION = "3.9"; +const int COLMAP_VERSION_NUMBER = 3900; +const std::string COLMAP_COMMIT_ID = "93af740"; +const std::string COLMAP_COMMIT_DATE = "2023-07-23"; + +} // namespace + +int GetVersionNumber() { return COLMAP_VERSION_NUMBER; } std::string GetVersionInfo() { return StringPrintf("COLMAP %s", COLMAP_VERSION.c_str()); diff --git a/src/colmap/util/version.cc.in b/src/colmap/util/version.cc.in new file mode 100644 index 000000000..edd6b2433 --- /dev/null +++ b/src/colmap/util/version.cc.in @@ -0,0 +1,64 @@ +// Copyright (c) 2023, ETH Zurich and UNC Chapel Hill. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// * Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// +// * Neither the name of ETH Zurich and UNC Chapel Hill nor the names of +// its contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE +// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +// Author: Johannes L. Schoenberger (jsch-at-demuc-dot-de) + +#include "colmap/util/version.h" + +#include "colmap/util/misc.h" + +namespace colmap { +namespace { + +const std::string COLMAP_VERSION = "${COLMAP_VERSION}"; +const int COLMAP_VERSION_NUMBER = ${COLMAP_VERSION_NUMBER}; +const std::string COLMAP_COMMIT_ID = "${GIT_COMMIT_ID}"; +const std::string COLMAP_COMMIT_DATE = "${GIT_COMMIT_DATE}"; + +} // namespace + +int GetVersionNumber() { return COLMAP_VERSION_NUMBER; } + +std::string GetVersionInfo() { + return StringPrintf("COLMAP %s", COLMAP_VERSION.c_str()); +} + +std::string GetBuildInfo() { +#ifdef CUDA_ENABLED + const std::string cuda_info = "with CUDA"; +#else + const std::string cuda_info = "without CUDA"; +#endif + return StringPrintf("Commit %s on %s %s", + COLMAP_COMMIT_ID.c_str(), + COLMAP_COMMIT_DATE.c_str(), + cuda_info.c_str()); +} + +} // namespace colmap diff --git a/src/colmap/util/version.h.in b/src/colmap/util/version.h similarity index 86% rename from src/colmap/util/version.h.in rename to src/colmap/util/version.h index d0fdc70ca..7ffd65c40 100644 --- a/src/colmap/util/version.h.in +++ b/src/colmap/util/version.h @@ -31,18 +31,14 @@ #pragma once -#include "misc.h" +#include namespace colmap { -const static std::string COLMAP_VERSION = "${COLMAP_VERSION}"; -const static int COLMAP_VERSION_NUMBER = ${COLMAP_VERSION_NUMBER}; -const static std::string COLMAP_COMMIT_ID = "${GIT_COMMIT_ID}"; -const static std::string COLMAP_COMMIT_DATE = "${GIT_COMMIT_DATE}"; +int GetVersionNumber(); std::string GetVersionInfo(); std::string GetBuildInfo(); } // namespace colmap -