diff --git a/Application/CMakeLists.txt b/Application/CMakeLists.txt index 23f5893fab3befb10fb66b7d77e8a226fbbdccbe..ded7f031f50112a6ec3385488730ffeca668c0bb 100644 --- a/Application/CMakeLists.txt +++ b/Application/CMakeLists.txt @@ -70,9 +70,9 @@ if(WIN32) #endif() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_USE_MATH_DEFINES -DNOMINMAX -DWIN32_LEAN_AND_MEAN -DCURL_STATICLIB") #set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:MSVCRT") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT /bigobj /O2 /GL") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT /bigobj /O2") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /bigobj /O0") - set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT /bigobj /O2 /GL") + set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT /bigobj /O2") set(GLEW_STATIC ON) else() set(BUILD_SHARED_LIBS OFF) @@ -803,11 +803,12 @@ if(${TREX_BUILD_OPENCV}) set(OPENCV_CMAKE_ARGS "") if(TREX_CONDA_PACKAGE_INSTALL) - set(OPENCV_CMAKE_ARGS ${OPENCV_CMAKE_ARGS} -DCMAKE_BUILD_TYPE=Release) + set(TREX_CMAKE_BUILD_TYPE Release) else() - set(OPENCV_CMAKE_ARGS ${OPENCV_CMAKE_ARGS} -DCMAKE_BUILD_TYPE=$<$<CONFIG:Debug>:Release>$<$<CONFIG:Release>:Debug>) + set(TREX_CMAKE_BUILD_TYPE $<$<CONFIG:Debug>:Release>$<$<CONFIG:Release>:Debug>) endif() set(OPENCV_CMAKE_ARGS ${OPENCV_CMAKE_ARGS} + -DCMAKE_BUILD_TYPE=${TREX_CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DBUILD_DOCS:BOOL=FALSE @@ -857,9 +858,9 @@ if(${TREX_BUILD_OPENCV}) GIT_REPOSITORY https://github.com/opencv/opencv.git GIT_TAG 4.3.0 UPDATE_COMMAND "" - CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${PKG_CONFIG_PATH}/pkgconfig ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=Release -G ${CMAKE_GENERATOR} ${OPENCV_CMAKE_ARGS} ${CMAKE_CURRENT_BINARY_DIR}/opencv/src/CustomOpenCV - BUILD_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${PKG_CONFIG_PATH}/pkgconfig ${CMAKE_COMMAND} --build . --config $<$<CONFIG:Debug>:Release>$<$<CONFIG:Release>:Debug> - INSTALL_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${PKG_CONFIG_PATH}/pkgconfig ${CMAKE_COMMAND} --build . --config $<$<CONFIG:Debug>:Release>$<$<CONFIG:Release>:Debug> --target install + CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${PKG_CONFIG_PATH}/pkgconfig ${CMAKE_COMMAND} -DCMAKE_BUILD_TYPE=${TREX_CMAKE_BUILD_TYPE} -G ${CMAKE_GENERATOR} ${OPENCV_CMAKE_ARGS} ${CMAKE_CURRENT_BINARY_DIR}/opencv/src/CustomOpenCV + BUILD_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${PKG_CONFIG_PATH}/pkgconfig ${CMAKE_COMMAND} --build . --config ${TREX_CMAKE_BUILD_TYPE} + INSTALL_COMMAND ${CMAKE_COMMAND} -E env PKG_CONFIG_PATH=${PKG_CONFIG_PATH}/pkgconfig ${CMAKE_COMMAND} --build . --config ${TREX_CMAKE_BUILD_TYPE} --target install CMAKE_ARGS ${OPENCV_CMAKE_ARGS}) else() diff --git a/Application/src/GitSHA1.cpp.in b/Application/src/GitSHA1.cpp.in index 0a6c73b25d20c63e7d04393b4c1f33753da91872..6760cafe7ba8a59fcf8a217695ef6f4e869408e1 100644 --- a/Application/src/GitSHA1.cpp.in +++ b/Application/src/GitSHA1.cpp.in @@ -1,2 +1,6 @@ #define GIT_SHA1 "@GIT_SHA1@" extern const char g_GIT_SHA1[] = GIT_SHA1; +#define TREX_BUILD_TYPE "@TREX_CMAKE_BUILD_TYPE@" +extern const char g_TREX_BUILD_TYPE[] = TREX_BUILD_TYPE; +#define TREX_BUILD_CXX_OPTIONS "@CMAKE_CXX_FLAGS@ @CMAKE_CXX_FLAGS_RELEASE@" +extern const char g_TREX_BUILD_CXX_OPTIONS[] = TREX_BUILD_CXX_OPTIONS; diff --git a/Application/src/GitSHA1.h b/Application/src/GitSHA1.h index 8e02c575feca5bdc6eb368cb98e7e9368323ec88..2eac60798debfca4ef2ca3fb24e925c10e224ef5 100644 --- a/Application/src/GitSHA1.h +++ b/Application/src/GitSHA1.h @@ -1 +1,3 @@ extern const char g_GIT_SHA1[]; +extern const char g_TREX_BUILD_TYPE[]; +extern const char g_TREX_BUILD_CXX_OPTIONS[]; \ No newline at end of file diff --git a/Application/src/commons/common/misc/SpriteMap.h b/Application/src/commons/common/misc/SpriteMap.h index 2cb1dfc72d43400d9fa796ee4ae2c1193c560d80..2fe32034e336d3b40d045c5fc204269fa78d34f7 100644 --- a/Application/src/commons/common/misc/SpriteMap.h +++ b/Application/src/commons/common/misc/SpriteMap.h @@ -327,9 +327,12 @@ namespace sprite { std::vector<std::string> keys() const { std::vector<std::string> result; - for (auto &p: _props) { + result.reserve(_props.size()); + + for (auto &p: _props) result.push_back(p.first.name()); - } + + std::sort(result.begin(), result.end()); return result; } diff --git a/Application/src/grabber/CMakeLists.txt b/Application/src/grabber/CMakeLists.txt index 306fc06936d8a77c4c71e888261a7112ca7861f1..00894b873db27c8f773473b78157fe6bbff89056 100644 --- a/Application/src/grabber/CMakeLists.txt +++ b/Application/src/grabber/CMakeLists.txt @@ -29,8 +29,10 @@ if(APPLE) set(SRCS ${SRCS} ${CMAKE_CURRENT_SOURCE_DIR}/gfx/GrabberIcon.icns) endif() +set(TREX_ADDITIONAL_SOURCES "") if(WITH_GITSHA1) - list(APPEND SRCS "${CMAKE_CURRENT_BINARY_DIR}/../GitSHA1.cpp" ../GitSHA1.h) + set(TREX_ADDITIONAL_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/../GitSHA1.cpp" ../GitSHA1.h) + list(APPEND SRCS ${TREX_ADDITIONAL_SOURCES}) endif() if(WIN32) @@ -59,7 +61,7 @@ COMMAND ${CMAKE_COMMAND} -E copy $<TARGET_FILE:trex_check_python> $<TARGET_FILE_ endif() add_dependencies(${TGRABS_EXEC_NAME} trex_check_python TRex::OpenCV) -add_executable(pvconvert pvconvert.cpp gif.h) +add_executable(pvconvert pvconvert.cpp gif.h ${TREX_ADDITIONAL_SOURCES}) target_link_libraries(pvconvert PUBLIC tracker_gui pv @@ -100,7 +102,7 @@ if(WITH_HTTPD) add_dependencies(${TGRABS_EXEC_NAME} LibMicroHttpd) endif() -add_executable(pvinfo pvinfo.cpp pvinfo_merge.cpp pvinfo_merge.h) +add_executable(pvinfo pvinfo.cpp pvinfo_merge.cpp pvinfo_merge.h ${TREX_ADDITIONAL_SOURCES}) target_link_libraries(pvinfo PRIVATE cnpy diff --git a/Application/src/tracker/CMakeLists.txt b/Application/src/tracker/CMakeLists.txt index 568f659d8f931da15b4f1e1f063642cf67bd9fd6..741ea9263e63391761689911941c01bf17037502 100644 --- a/Application/src/tracker/CMakeLists.txt +++ b/Application/src/tracker/CMakeLists.txt @@ -33,8 +33,10 @@ if(WIN32 OR UNIX AND NOT APPLE) set(SRCS ${SRCS} trex.rc) endif() +set(TREX_ADDITIONAL_SOURCES "") if(WITH_GITSHA1) - list(APPEND SRCS "${CMAKE_CURRENT_BINARY_DIR}/../GitSHA1.cpp" ../GitSHA1.h) + set(TREX_ADDITIONAL_SOURCES "${CMAKE_CURRENT_BINARY_DIR}/../GitSHA1.cpp" ../GitSHA1.h) + list(APPEND SRCS ${TREX_ADDITIONAL_SOURCES}) endif() if(NOT WIN32 AND TREX_WITH_TESTS) diff --git a/Application/src/tracker/misc/default_config.cpp b/Application/src/tracker/misc/default_config.cpp index 6f3159dca8244f55fdcfcc49e7218e3e67c55cc6..822af08a28a0dff22f616dda84d576b96c833eb2 100644 --- a/Application/src/tracker/misc/default_config.cpp +++ b/Application/src/tracker/misc/default_config.cpp @@ -2,6 +2,7 @@ #include <misc/SpriteMap.h> #include <file/Path.h> #include <misc/BlobSizeRange.h> +#include "GitSHA1.h" #ifndef WIN32 #include <unistd.h> @@ -180,6 +181,15 @@ file::Path conda_environment_path() { #ifdef WIN32 #define PYTHON_TIPPS " (containing pythonXX.exe)" #endif + + + constexpr std::string_view is_ndebug_enabled() { +#ifndef NDEBUG + return std::string_view("debug"); +#else + return std::string_view("release"); +#endif + } void get(sprite::Map& config, GlobalSettings::docs_map_t& docs, decltype(GlobalSettings::set_access_level)* fn) { @@ -194,6 +204,9 @@ file::Path conda_environment_path() { CONFIG<std::string>("app_name", "TRex", "Name of the application.", SYSTEM); CONFIG("version", std::string("1.0"), "Current application version.", SYSTEM); + CONFIG("build_type", std::string(g_TREX_BUILD_TYPE), "The mode the application was built in.", SYSTEM); + CONFIG("build_is_debug", std::string(is_ndebug_enabled()), "If built in debug mode, this will show 'debug'.", SYSTEM); + CONFIG("build_cxx_options", std::string(g_TREX_BUILD_CXX_OPTIONS), "The mode the application was built in.", SYSTEM); CONFIG("build", std::string(), "Current build version", SYSTEM); CONFIG("cmd_line", std::string(), "An approximation of the command-line arguments passed to the program.", SYSTEM); CONFIG("ffmpeg_path", file::Path(), "Path to an ffmpeg executable file. This is used for converting videos after recording them (from the GUI). It is not a critical component of the software, but mostly for convenience."); @@ -617,7 +630,7 @@ file::Path conda_environment_path() { // UPDATE: write only keys with values that have changed compared // to the default options if(!config.has(key) || config[key] != GlobalSettings::get(key)) { - if((include_build_number && key == "build") + if((include_build_number && utils::beginsWith(key, "build")) || (GlobalSettings::access_level(key) <= AccessLevelType::STARTUP && !contains(exclude_fields, key) && !contains(additional_exclusions, key))) diff --git a/conda/bld.bat b/conda/bld.bat index 79e1f841a6e9bf08274e978a4e109b6772a85898..bcab20eec5923771373ca2f910b36da7595f5c0e 100644 --- a/conda/bld.bat +++ b/conda/bld.bat @@ -16,7 +16,7 @@ echo findlib is %findlib% echo Generator %CMAKE_GENERATOR% echo Python %PYTHON% -cmake .. -DWITH_GITSHA1=ON -DPYTHON_INCLUDE_DIR:FILEPATH=%pythoninclude% -DPYTHON_LIBRARY:FILEPATH=%findlib% -DPYTHON_EXECUTABLE:FILEPATH=%PREFIX%\python -DWITH_PYLON=OFF -G "%CMAKE_GENERATOR%" -DTREX_BUILD_OPENCV=ON -DCMAKE_INSTALL_PREFIX=%PREFIX% -DCMAKE_SKIP_RPATH=ON -DTREX_BUILD_PNG=ON -DTREX_BUILD_ZIP=ON -DTREX_CONDA_PACKAGE_INSTALL=ON -DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=TRUE -DTREX_WITH_TESTS:BOOL=OFF -DTREX_BUILD_GLFW=ON -DTREX_BUILD_ZLIB=ON +cmake .. -DWITH_GITSHA1=ON -DPYTHON_INCLUDE_DIR:FILEPATH=%pythoninclude% -DPYTHON_LIBRARY:FILEPATH=%findlib% -DPYTHON_EXECUTABLE:FILEPATH=%PREFIX%\python -DWITH_PYLON=OFF -G "%CMAKE_GENERATOR%" -DTREX_BUILD_OPENCV=ON -DCMAKE_INSTALL_PREFIX=%PREFIX% -DCMAKE_SKIP_RPATH=ON -DTREX_BUILD_PNG=ON -DTREX_BUILD_ZIP=ON -DTREX_CONDA_PACKAGE_INSTALL=ON -DCMAKE_INSTALL_RPATH_USE_LINK_PATH:BOOL=TRUE -DTREX_WITH_TESTS:BOOL=OFF -DTREX_BUILD_GLFW=ON -DTREX_BUILD_ZLIB=ON -DCMAKE_BUILD_TYPE=Release cmake --build . --target Z_LIB --config Release cmake --build . --target libzip --config Release