diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 37328a1..1b11fce 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -7,7 +7,11 @@ on: workflow_dispatch: env: - CCACHE_BASEDIR: ${{ github.workspace }} + CCACHE_DIR: /ccache + CCACHE_MAXSIZE: 10G + CCACHE_BASEDIR: /root/.conan2 + CCACHE_NOHASHDIR: "true" + CCACHE_COMPILERCHECK: "%compiler% -dumpversion" jobs: build-and-test: @@ -19,7 +23,7 @@ jobs: matrix: build_type: ["Debug", "RelWithDebInfo", "Release"] unity_build: ["ON", "OFF"] - conan_profile: ["./ConanProfiles/clang", "./ConanProfiles/clangd", "./ConanProfiles/clangd_asan"] + conan_profile: ["./ConanProfiles/clang", "./ConanProfiles/clang_asan"] name: "Build & Test ${{ matrix.build_type }} with ${{ matrix.conan_profile }} (Unity Build: ${{ matrix.unity_build }})" steps: - name: Install Node.js diff --git a/.gitea/workflows/package.yml b/.gitea/workflows/package.yml index 338b163..8567c5a 100644 --- a/.gitea/workflows/package.yml +++ b/.gitea/workflows/package.yml @@ -7,7 +7,11 @@ on: workflow_dispatch: env: - CCACHE_BASEDIR: ${{ github.workspace }} + CCACHE_DIR: /ccache + CCACHE_MAXSIZE: 10G + CCACHE_BASEDIR: /root/.conan2 + CCACHE_NOHASHDIR: "true" + CCACHE_COMPILERCHECK: "%compiler% -dumpversion" jobs: conan-packages: diff --git a/.gitea/workflows/sonarqube.yml b/.gitea/workflows/sonarqube.yml index 683929c..8d2be35 100644 --- a/.gitea/workflows/sonarqube.yml +++ b/.gitea/workflows/sonarqube.yml @@ -6,6 +6,13 @@ on: - main - Development +env: + CCACHE_DIR: /ccache + CCACHE_MAXSIZE: 10G + CCACHE_BASEDIR: /root/.conan2 + CCACHE_NOHASHDIR: "true" + CCACHE_COMPILERCHECK: "%compiler% -dumpversion" + jobs: build-and-test: runs-on: ubuntu-latest diff --git a/Bin2CPP/Sources/Bin2CPP/CMakeLists.txt b/Bin2CPP/Sources/Bin2CPP/CMakeLists.txt index c72f1be..6347ccb 100644 --- a/Bin2CPP/Sources/Bin2CPP/CMakeLists.txt +++ b/Bin2CPP/Sources/Bin2CPP/CMakeLists.txt @@ -40,14 +40,24 @@ set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Bin2CPP/${ParentFolder}) ##################ASAN SETUP################### if(${ASAN}) - if (MSVC) + if(MSVC) get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY) set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll") - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E echo "Copying ASan DLL: ${ASAN_DLL} to $" - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$" + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp" + DEPENDS "${ASAN_DLL}" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$" + COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp" + COMMENT "Copying ASan DLL for ${PROJECT_NAME}" ) + + add_custom_target(${PROJECT_NAME}Asan + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp" + ) + + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Asan) + set_target_properties(${PROJECT_NAME}Asan PROPERTIES FOLDER UtilityTargets/Bin2CPP/${ParentFolder}) endif() endif() diff --git a/Bin2CPP/Sources/Bin2CPPLib/CMakeLists.txt b/Bin2CPP/Sources/Bin2CPPLib/CMakeLists.txt index e0acc2b..144c20d 100644 --- a/Bin2CPP/Sources/Bin2CPPLib/CMakeLists.txt +++ b/Bin2CPP/Sources/Bin2CPPLib/CMakeLists.txt @@ -41,7 +41,6 @@ target_link_libraries(${PROJECT_NAME} target_compile_definitions(${PROJECT_NAME} PUBLIC - QUILL_NO_EXCEPTIONS QUILL_DISABLE_NON_PREFIXED_MACROS) set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/MimallocImpl.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION ON) diff --git a/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt b/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt index 4f283e1..48e69ba 100644 --- a/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt +++ b/Bin2CPP/Tests/Bin2CPPLib/CMakeLists.txt @@ -42,24 +42,49 @@ set_target_properties(${PROJECT_NAME} PROPERTIES FOLDER Tests/Bin2CPP/${ParentFo ##################ASAN SETUP################### if(${ASAN}) - if (MSVC) + if(MSVC) get_filename_component(MSVC_BIN_DIR "${CMAKE_CXX_COMPILER}" DIRECTORY) set(ASAN_DLL "${MSVC_BIN_DIR}/clang_rt.asan_dynamic-x86_64.dll") - add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E echo "Copying ASan DLL: ${ASAN_DLL} to $" - COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$" + add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp" + DEPENDS "${ASAN_DLL}" + COMMAND ${CMAKE_COMMAND} -E copy_if_different "${ASAN_DLL}" "$" + COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp" + COMMENT "Copying ASan DLL for ${PROJECT_NAME}" ) + + add_custom_target(${PROJECT_NAME}Asan + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-asan.timestamp" + ) + + add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Asan) + set_target_properties(${PROJECT_NAME}Asan PROPERTIES FOLDER UtilityTargets/Tests/Bin2CPP) endif() endif() ##################COPY FIXTURE FOLDER################### - if(NOT EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/Fixture) file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Fixture) endif() -add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different ${CMAKE_CURRENT_SOURCE_DIR}/Fixture $/Fixture - COMMENT "Copying Fixture folder ${CMAKE_CURRENT_SOURCE_DIR}/Fixture to $/Fixture" -) \ No newline at end of file +file(GLOB_RECURSE FIXTURE_FILES + CONFIGURE_DEPENDS + ${CMAKE_CURRENT_SOURCE_DIR}/Fixture/* +) + +add_custom_command( + OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp" + DEPENDS ${FIXTURE_FILES} + COMMAND ${CMAKE_COMMAND} -E remove_directory $/Fixture + COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Fixture $/Fixture + COMMAND ${CMAKE_COMMAND} -E touch "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp" + COMMENT "Copying Fixture folder for ${PROJECT_NAME}" +) + +add_custom_target(${PROJECT_NAME}Fixture + DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-fixture.timestamp" +) + +add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}Fixture) +set_target_properties(${PROJECT_NAME}Fixture PROPERTIES FOLDER UtilityTargets/Tests/Bin2CPP) \ No newline at end of file diff --git a/CMake/CustomTargets.cmake b/CMake/CustomTargets.cmake index 2f6a29c..9f402e0 100644 --- a/CMake/CustomTargets.cmake +++ b/CMake/CustomTargets.cmake @@ -1,16 +1,3 @@ -foreach(CONFIG DEBUG RELWITHDEBINFO) - if("${CMAKE_EXE_LINKER_FLAGS_${CONFIG}}" MATCHES "/INCREMENTAL:NO") - string(REGEX REPLACE "/INCREMENTAL([^:]|$)" "" - CMAKE_EXE_LINKER_FLAGS_${CONFIG} - "${CMAKE_EXE_LINKER_FLAGS_${CONFIG}}") - endif() - if("${CMAKE_SHARED_LINKER_FLAGS_${CONFIG}}" MATCHES "/INCREMENTAL:NO") - string(REGEX REPLACE "/INCREMENTAL([^:]|$)" "" - CMAKE_SHARED_LINKER_FLAGS_${CONFIG} - "${CMAKE_SHARED_LINKER_FLAGS_${CONFIG}}") - endif() -endforeach() - add_library(Bin2CPPCompileAndLinkFlags INTERFACE) target_compile_options(Bin2CPPCompileAndLinkFlags INTERFACE diff --git a/ConanProfiles/Toolchains/ccache.cmake b/ConanProfiles/Toolchains/ccache.cmake new file mode 100644 index 0000000..5fce6ee --- /dev/null +++ b/ConanProfiles/Toolchains/ccache.cmake @@ -0,0 +1,30 @@ +include_guard() + +# Find ccache executable +find_program(CCACHE_PROGRAM NAMES ccache) + +if(CCACHE_PROGRAM) + message(STATUS "ccache found: ${CCACHE_PROGRAM}, enabling via CMake launcher and environment.") + if (CMAKE_GENERATOR MATCHES "Visual Studio") + # Copy original ccache.exe and rename to cl.exe, this way intermediate cmd file is not needed + file(COPY_FILE ${CCACHE_PROGRAM} ${CMAKE_BINARY_DIR}/cl.exe ONLY_IF_DIFFERENT) + + # Set Visual Studio global variables: + # - Use above cl.exe (ccache.exe) as a compiler + # - Enable parallel compilation + list(APPEND CMAKE_VS_GLOBALS + "CLToolExe=cl.exe" + "CLToolPath=${CMAKE_BINARY_DIR}" + "UseMultiToolTask=true" + "UseStructuredOutput=false" + ) + elseif(CMAKE_GENERATOR MATCHES "Ninja" OR CMAKE_GENERATOR MATCHES "Unix Makefiles") + message(STATUS "Using ccache as compiler launcher for Ninja or Makefiles.") + set(CMAKE_CXX_COMPILER_LAUNCHER ${CCACHE_PROGRAM} CACHE FILEPATH "CXX compiler cache used" FORCE) + set(CMAKE_C_COMPILER_LAUNCHER ${CCACHE_PROGRAM} CACHE FILEPATH "C compiler cache used" FORCE) + else() + message(WARNING "Unsupported generator for ccache integration: ${CMAKE_GENERATOR}. ccache will not be used.") + endif() +else() + message(WARNING "ccache not found. Not enabling ccache integration.") +endif() \ No newline at end of file diff --git a/ConanProfiles/Toolchains/ipo.cmake b/ConanProfiles/Toolchains/ipo.cmake new file mode 100644 index 0000000..7e83475 --- /dev/null +++ b/ConanProfiles/Toolchains/ipo.cmake @@ -0,0 +1,5 @@ +include_guard() + +set(CMAKE_POLICY_DEFAULT_CMP0069 NEW) + +set(CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE TRUE) \ No newline at end of file diff --git a/ConanProfiles/clang b/ConanProfiles/clang index 372d0f3..16c2847 100644 --- a/ConanProfiles/clang +++ b/ConanProfiles/clang @@ -10,16 +10,14 @@ compiler.runtime=static build_type=Release [conf] -tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake tools.system.package_manager:mode=install tools.system.package_manager:sudo=True -tools.build:exelinkflags=["-fuse-ld=mold", "-flto"] -tools.build:sharedlinkflags=["-fuse-ld=mold", "-flto"] - -tools.build:cflags=["-flto"] -tools.build:cxxflags=["-flto"] +tools.build:exelinkflags=["-fuse-ld=mold"] +tools.build:sharedlinkflags=["-fuse-ld=mold"] tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} diff --git a/ConanProfiles/clangd_asan b/ConanProfiles/clang_asan similarity index 83% rename from ConanProfiles/clangd_asan rename to ConanProfiles/clang_asan index 9cf8200..cb1cfe9 100644 --- a/ConanProfiles/clangd_asan +++ b/ConanProfiles/clang_asan @@ -10,7 +10,8 @@ compiler.runtime=static build_type=Debug [conf] -tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake tools.system.package_manager:mode=install tools.system.package_manager:sudo=True diff --git a/ConanProfiles/clang_coverage b/ConanProfiles/clang_coverage index c0f9145..bbe10fa 100644 --- a/ConanProfiles/clang_coverage +++ b/ConanProfiles/clang_coverage @@ -10,7 +10,8 @@ compiler.runtime=static build_type=Debug [conf] -tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake tools.system.package_manager:mode=install tools.system.package_manager:sudo=True diff --git a/ConanProfiles/clangd b/ConanProfiles/clangd deleted file mode 100644 index 9885de5..0000000 --- a/ConanProfiles/clangd +++ /dev/null @@ -1,29 +0,0 @@ -[settings] -os=Linux -arch=x86_64 -compiler=clang -compiler.version=20 -compiler.libcxx=libstdc++11 -compiler.cppstd=20 -compiler.cstd=17 -compiler.runtime=static -build_type=Debug - -[conf] -tools.cmake.cmaketoolchain:extra_variables={'CMAKE_CXX_COMPILER_LAUNCHER': 'ccache', 'CMAKE_C_COMPILER_LAUNCHER': 'ccache'} - -tools.system.package_manager:mode=install -tools.system.package_manager:sudo=True - -tools.build:exelinkflags=["-fuse-ld=mold"] -tools.build:sharedlinkflags=["-fuse-ld=mold"] - -tools.cmake.cmaketoolchain:generator=Ninja - -tools.build:compiler_executables={"c": "clang", "cpp": "clang++"} - -[tool_requires] -!cmake/*: cmake/[>=4.2] - -[options] -bin2cpp/*:build_tests=True diff --git a/ConanProfiles/msvc b/ConanProfiles/msvc index abbaeed..7bf2f0e 100644 --- a/ConanProfiles/msvc +++ b/ConanProfiles/msvc @@ -9,12 +9,10 @@ compiler.runtime=static build_type=Release [conf] -tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake -tools.build:exelinkflags=["/LTCG", "/INCREMENTAL:NO"] -tools.build:sharedlinkflags=["/LTCG", "/INCREMENTAL:NO"] - -tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1", "/GL"] +tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1"] tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew"] [tool_requires] diff --git a/ConanProfiles/msvcd_asan b/ConanProfiles/msvc_asan similarity index 75% rename from ConanProfiles/msvcd_asan rename to ConanProfiles/msvc_asan index 2b8cdca..866f22e 100644 --- a/ConanProfiles/msvcd_asan +++ b/ConanProfiles/msvc_asan @@ -9,10 +9,8 @@ compiler.runtime=static build_type=Debug [conf] -tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake - -tools.build:exelinkflags=["/INCREMENTAL:NO"] -tools.build:sharedlinkflags=["/INCREMENTAL:NO"] +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ccache.cmake +tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/Toolchains/ipo.cmake tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1", "/fsanitize=address"] tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew", "/fsanitize=address"] diff --git a/ConanProfiles/msvc_ccache.cmake b/ConanProfiles/msvc_ccache.cmake deleted file mode 100644 index 2818eec..0000000 --- a/ConanProfiles/msvc_ccache.cmake +++ /dev/null @@ -1,19 +0,0 @@ -# https://github.com/ccache/ccache/wiki/MS-Visual-Studio#usage-with-cmake - -find_program(ccache_exe ccache) -if(ccache_exe) - file(COPY_FILE - ${ccache_exe} ${CMAKE_BINARY_DIR}/cl.exe - ONLY_IF_DIFFERENT) - - # By default Visual Studio generators will use /Zi which is not compatible - # with ccache, so tell Visual Studio to use /Z7 instead. - message(STATUS "Setting MSVC debug information format to 'Embedded'") - set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$:Embedded>") - - set(CMAKE_VS_GLOBALS - "CLToolExe=cl.exe" - "CLToolPath=${CMAKE_BINARY_DIR}" - "UseMultiToolTask=true" - ) -endif() \ No newline at end of file diff --git a/ConanProfiles/msvcd b/ConanProfiles/msvcd deleted file mode 100644 index 10afcdc..0000000 --- a/ConanProfiles/msvcd +++ /dev/null @@ -1,20 +0,0 @@ -[settings] -os=Windows -arch=x86_64 -compiler=msvc -compiler.version=195 -compiler.cppstd=20 -compiler.cstd=17 -compiler.runtime=static -build_type=Debug - -[conf] -tools.cmake.cmaketoolchain:user_toolchain+={{profile_dir}}/msvc_ccache.cmake - -tools.build:cflags=["/Zc:preprocessor", "/Zc:__STDC__", "/D_CRT_DECLARE_NONSTDC_NAMES=1"] -tools.build:cxxflags=["/Zc:preprocessor", "/permissive-", "/Zc:__cplusplus", "/Zc:enumTypes", "/Zc:templateScope", "/Zc:throwingNew"] -[tool_requires] -!cmake/*: cmake/[>=4.2] - -[options] -bin2cpp/*:build_tests=True diff --git a/generate_dependencies.bat b/generate_dependencies.bat index a585f44..74fb9c5 100644 --- a/generate_dependencies.bat +++ b/generate_dependencies.bat @@ -23,8 +23,8 @@ REM Add the remote conan remote add bigfootpackages https://conan.romainboullard.com/artifactory/api/conan/BigfootPackages REM Install dependencies with the specified build option -conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/msvc %build_option% -of build -s build_type=Release -conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvcd -pr:b=./ConanProfiles/msvcd %build_option% -of build -s build_type=RelWithDebInfo -conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvcd -pr:b=./ConanProfiles/msvcd %build_option% -of build -s build_type=Debug +conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/msvc %build_option% -of build -s build_type=Release +conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/msvc %build_option% -of build -s build_type=RelWithDebInfo +conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/msvc -pr:b=./ConanProfiles/msvc %build_option% -of build -s build_type=Debug endlocal diff --git a/generate_dependencies.sh b/generate_dependencies.sh index e4d8952..18311d4 100755 --- a/generate_dependencies.sh +++ b/generate_dependencies.sh @@ -11,13 +11,13 @@ conan remote add bigfootpackages https://conan.romainboullard.com/artifactory/ap # Set the build option based on the argument if [ "$1" == "force" ]; then - conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build='*' -of build -s build_type=Release - conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build='*' -of build -s build_type=RelWithDebInfo - conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build='*' -of build -s build_type=Debug + conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build='*' -of build -s build_type=Release + conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build='*' -of build -s build_type=RelWithDebInfo + conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build='*' -of build -s build_type=Debug elif [ "$1" == "missing" ]; then - conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -of build -s build_type=Release - conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build=missing -of build -s build_type=RelWithDebInfo - conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clangd -pr:b=./ConanProfiles/clangd --build=missing -of build -s build_type=Debug + conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -of build -s build_type=Release + conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -of build -s build_type=RelWithDebInfo + conan install . --remote=bigfootpackages -pr:h=./ConanProfiles/clang -pr:b=./ConanProfiles/clang --build=missing -of build -s build_type=Debug else echo "Invalid argument: $1" echo "Usage: $0 [force|missing]"