Skip to content

Commit

Permalink
Generate version info in .cc file to reduce number of recompilations (c…
Browse files Browse the repository at this point in the history
  • Loading branch information
ahojnnes authored Jul 23, 2023
1 parent 93af740 commit 8317785
Show file tree
Hide file tree
Showing 6 changed files with 82 additions and 10 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Custom files
LocalConfig.cmake
src/colmap/util/version.h
src/colmap/util/version.cc

# Custom directories
.idea/
Expand Down
4 changes: 2 additions & 2 deletions cmake/GenerateVersionDefinitions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -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")
2 changes: 1 addition & 1 deletion src/colmap/scene/database.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1413,7 +1413,7 @@ void Database::UpdateSchema() const {
// Update user version number.
std::unique_lock<std::mutex> 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);
}

Expand Down
12 changes: 12 additions & 0 deletions src/colmap/util/version.cc
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down
64 changes: 64 additions & 0 deletions src/colmap/util/version.cc.in
Original file line number Diff line number Diff line change
@@ -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
8 changes: 2 additions & 6 deletions src/colmap/util/version.h.in → src/colmap/util/version.h
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,14 @@

#pragma once

#include "misc.h"
#include <string>

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

0 comments on commit 8317785

Please sign in to comment.