Skip to content

Instantly share code, notes, and snippets.

@doevelopper
Created November 27, 2023 16:58
Show Gist options
  • Save doevelopper/5a595cc4940c3d227baada5ab056e16c to your computer and use it in GitHub Desktop.
Save doevelopper/5a595cc4940c3d227baada5ab056e16c to your computer and use it in GitHub Desktop.
My c++ configuration files for Jetbrqains fleet
{
    "configurations": [
        {
            "type": "command",
            "name": "Create Build and Dependencies Directory",
            "program": "/opt/cmake/bin/cmake",
            "args": [
                "-E",
                "make_directory",
                "$PROJECT_DIR$/build-output/standalone-libs"
            ],
        },
        {
            "type": "command",
            "name": "Generate build receipe",
            "program": "/opt/cmake/bin/cmake",
            "args": [
                "-S",
                "$PROJECT_DIR$",
                "-B",
                "$PROJECT_DIR$/build-output",
                "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON",
                "-DCMAKE_BUILD_TYPE=Release",
                "-DCMAKE_CXX_COMPILER=/opt/clang+llvm/bin/clang++",
                "-DCMAKE_C_COMPILER=/opt/clang+llvm/bin/clang",
                "-DCMAKE_CXX_CLANG_TIDY=/opt/clang+llvm/bin/clang-tidy;-checks=*",
                "-DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=/usr/bin/iwyu;--transitive_includes_only",
                "-DCMAKE_LINK_WHAT_YOU_USE=TRUE"
                "-DCMAKE_CXX_CPPLINT=/opt/cpplint/cpplint.py;--linelength=120)",
                "-DCMAKE_CXX_CPPCHECK=/opt/cppcheck/cppcheck;--std=c++20",
                "-DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs",
                "-DCMAKE_INSTALL_PREFIX=$PROJECT_DIR$/build-output/installs",
                "-DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs"
            ],
            "environment": {
                "TEMP_DIR": "/home/user/temp",
                "GENERATE_RANDOM_PASSWORD": "true",
                "CC": "/opt/clang+llvm/bin/clang",
                "CXX": "/opt/clang+llvm/bin/clang++",
            }            
        },
        {
            "type": "command",
            "name": "Build Librarie and Dependencies",
            "program": "/opt/cmake/bin/cmake",
            "args": [
                "--build",
                "$PROJECT_DIR$/build-output",
                "--target",
                "all",
                "--config",
                "Release"
            ],
        },
        {
        "type": "command",
        "name": "Run main application",
        "program": "$PROJECT_DIR$/src/main/cpp/app",
        },
        {
        "type": "command",
        "name": "Run unit test application",
        "program": "$PROJECT_DIR$/src/test/cpp/appTest",
        },
    ]
}
ExternalProject_Add(RapidJSON
        PREFIX "vendor/tencent/rapidjson"
        GIT_REPOSITORY "https://github.com/Tencent/rapidjson.git"
        GIT_TAG f9d53419e912910fd8fa57d5705fa41425428c35
        TIMEOUT 10
        CMAKE_ARGS
            -DRAPIDJSON_BUILD_TESTS=OFF
            -DRAPIDJSON_BUILD_DOC=OFF
            -DRAPIDJSON_BUILD_EXAMPLES=OFF
            -DRAPIDJSON_BUILD_CXX17=ON
            -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/installs
            -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
        #    CONFIGURE_COMMAND ""
        #    BUILD_COMMAND make
        #    INSTALL_COMMAND make install
        UPDATE_COMMAND ""
)

ExternalProject_Add(libopenssl
    PREFIX "vendor/openssl/openssl"
    URL
        https://www.openssl.org/source/openssl-3.2.0.tar.gz
    CONFIGURE_COMMAND
        ./config no-shared no-idea no-mdc2 no-rc5 --prefix=${CMAKE_BINARY_DIR}/installs
    BUILD_COMMAND
        make
    INSTALL_COMMAND
        make install_sw
    BUILD_IN_SOURCE 1
)

ExternalProject_Add(Boost
    PREFIX "vendor/boostorg/Boost"
    DEPENDS
        libopenssl
    URL
        https://boostorg.jfrog.io/artifactory/main/release/1.83.0/source/boost_1_83_0.tar.gz
    CONFIGURE_COMMAND
        ./bootstrap.sh --prefix=${CMAKE_BINARY_DIR}/installs
    BUILD_COMMAND
        ./b2 clean
        ./b2 cxxstd=23 -j64 link=static address-model=64 --architecture=x64 variant=release #toolset=clang cxxflags=-fPIC cxxstd=14
    BUILD_IN_SOURCE
        true
    INSTALL_COMMAND
        ./b2 install
    INSTALL_DIR
        ${CMAKE_BINARY_DIR}/installs
)

    ExternalProject_Add(googletest
        PREFIX "vendor/google/googletest"
        GIT_REPOSITORY https://github.com/google/googletest.git
        GIT_TAG main
        GIT_PROGRESS 1
        CMAKE_ARGS
            -DCMAKE_BUILD_TYPE:STRING=Release
            -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
            $<$<PLATFORM_ID:Windows>:-Dgtest_force_shared_crt:BOOL=ON>
        LOG_CONFIGURE ON
        LOG_BUILD ON
        LOG_INSTALL ON
    )

    ExternalProject_Add(abseilcpp
        PREFIX "vendor/abseil/abseil-cpp"
        GIT_REPOSITORY https://github.com/abseil/abseil-cpp.git
        GIT_TAG master
        GIT_PROGRESS 1
        CMAKE_ARGS
            -DCMAKE_BUILD_TYPE:STRING=Release
            -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
        LOG_CONFIGURE ON
        LOG_BUILD ON
        LOG_INSTALL ON
    )

ExternalProject_Add(crc32c
        PREFIX "vendor/google/crc32c"
        GIT_REPOSITORY "https://github.com/google/crc32c.git"
        GIT_TAG "21fc8ef30415a635e7351ffa0e5d5367943d4a94"
        EXCLUDE_FROM_ALL ON
        CMAKE_CACHE_ARGS
            -DCRC32C_BUILD_TESTS:BOOL=OFF
            -DBUILD_SHARED_LIBS:STRING=no
            -DCRC32C_BUILD_BENCHMARKS:BOOL=OFF
            -DCRC32C_USE_GLOG:BOOL=OFF
            -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
            -DCMAKE_BUILD_TYPE:STRING=Release
            -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
            -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
)

    ExternalProject_Add(libexpat
        PREFIX "vendor/libexpat/expat"
        GIT_REPOSITORY https://github.com/libexpat/libexpat.git
        GIT_TAG master
        GIT_PROGRESS 1
        SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/libexpat-cpp-src"
        BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libs/libexpat-cpp-build"
        CONFIGURE_COMMAND ${CMAKE_COMMAND} -S ${CMAKE_CURRENT_BINARY_DIR}/libs/libexpat-cpp-src/expat -B ${CMAKE_CURRENT_BINARY_DIR}/libs/libexpat-cpp-build
            -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/installs -DBUILD_SHARED_LIBS=OFF -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_SHARED_LIBS=OFF
            -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=true
        BUILD_COMMAND
        COMMAND ${CMAKE_COMMAND} --build <BINARY_DIR> --config Release --target install
        INSTALL_COMMAND ""
        TEST_COMMAND ""
    )

    ExternalProject_Add(libapr
        PREFIX "vendor/apache/apr"
        GIT_REPOSITORY https://github.com/apache/apr.git
        GIT_TAG 1.7.x
        GIT_PROGRESS 1
        BUILD_IN_SOURCE 1
        CONFIGURE_COMMAND
            ./buildconf && ./configure --enable-threads --enable-posix-shm --enable-allocator-uses-mmap
                --enable-allocator-guard-pages --enable-pool-concurrency-check --enable-other-child
                --prefix=${CMAKE_BINARY_DIR}/installs
        BUILD_COMMAND
            COMMAND make clean && make install
)

ExternalProject_Add(libapr-util
    PREFIX "vendor/apache/apr-util"
    GIT_REPOSITORY https://github.com/apache/apr-util.git
    GIT_TAG 1.7.x
    GIT_PROGRESS 1
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND
        ./buildconf --with-apr=${CMAKE_BINARY_DIR}/vendor/apache/apr/src/libapr --prefix=${CMAKE_BINARY_DIR}/installs &&  ./configure --prefix=${CMAKE_BINARY_DIR}/installs --with-apr=${CMAKE_BINARY_DIR}/installs --with-openssl=${CMAKE_BINARY_DIR}/installs --with-expat=${CMAKE_BINARY_DIR}/installs
)

ExternalProject_Add(libxerces
    PREFIX "vendor/apache/xerces-c"
    GIT_REPOSITORY https://github.com/apache/xerces-c.git
    GIT_TAG master
    GIT_PROGRESS 1
    BUILD_IN_SOURCE 1
    CONFIGURE_COMMAND
        ./reconf && ./configure --prefix=${CMAKE_BINARY_DIR}/installs/
    )

ExternalProject_Add(libfmt
    PREFIX "vendor/fmtlib/fmt"
    GIT_REPOSITORY
        "https://github.com/fmtlib/fmt.git"
    GIT_TAG
        "10.1.1"
    GIT_CONFIG advice.detachedHead=false
    CMAKE_CACHE_ARGS
        -DFMT_INSTALL:BOOL=ON
        -DFMT_DOC:BOOL=OFF
        -DFMT_TEST:BOOL=OFF
        -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
        -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
)

ExternalProject_Add(curl
    PREFIX "vendor/curl/curl"
    GIT_REPOSITORY "https://github.com/curl/curl"
    GIT_TAG "master"
    GIT_CONFIG advice.detachedHead=false
    CMAKE_CACHE_ARGS
        -DBUILD_SHARED_LIBS:BOOL=OFF
        -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
        -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
        -DBUILD_STATIC_LIBS:BOOL=ON
        -BUILD_SHARED_LIBS:BOOL=OFF
#        CONFIGURE_COMMAND ./configure --prefix=${CMAKE_BINARY_DIR}/installs --with-ssl=${CMAKE_BINARY_DIR}/installs
#                --enable-shared=no --disable-ldap --disable-ldaps --without-brotli
#                --without-zstd --without-libidn2 --without-nghttp2 #--enable-debug
)

ExternalProject_Add(libzlib
    PREFIX "vendor/madler/zlib"
    GIT_REPOSITORY    https://github.com/madler/zlib.git
    GIT_TAG           master
    CMAKE_ARGS
        -DCMAKE_POSITION_INDEPENDENT_CODE:BOOL=ON
        -DBUILD_TESTING:BOOL=OFF
        -DBUILD_CURL_EXE:BOOL=OFF
        -DBUILD_SHARED_LIBS:BOOL=OFF
        -DCURL_STATICLIB:BOOL=ON
#        -DHTTP_ONLY:BOOL=ON
        -DCMAKE_BUILD_TYPE:STRING=Release
        -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
        -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
)

 ExternalProject_Add(libopenssl
    PREFIX "vendor/openssl/openssl"
    URL
        https://www.openssl.org/source/openssl-3.2.0.tar.gz
    CONFIGURE_COMMAND
        ./config --prefix=${CMAKE_BINARY_DIR}/installs
    BUILD_COMMAND
        make
    INSTALL_COMMAND
        make install_sw
    BUILD_IN_SOURCE 1
)

ExternalProject_Add(log4cxx
    PREFIX "vendor/apache/logging-log4cxx"
    GIT_REPOSITORY "https://github.com/apache/logging-log4cxx.git"
    GIT_TAG 0f20ec761ef24191094bb7b575ba3637f422a1e5
    TIMEOUT 10
    CMAKE_ARGS
        -DBUILD_TESTING:BOOL=OFF
        -DBUILD_SHARED_LIBS:BOOL=OFF
        -DAPU_STATIC:BOOL=ON
        -DAPR_STATIC:BOOL=ON
        -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/installs
        -DCMAKE_PREFIX_PATH=${CMAKE_BINARY_DIR}/installs
#    CONFIGURE_COMMAND ""
#    BUILD_COMMAND make
#    INSTALL_COMMAND make install
    UPDATE_COMMAND ""
)
## ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK
## ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK ITS OK
ExternalProject_Add(sqlite
        PREFIX "vendor/sqlite/sqlite"
        GIT_REPOSITORY https://github.com/sqlite/sqlite.git
        GIT_TAG version-3.36.0
        SOURCE_DIR "${TD_CONTRIB_DIR}/sqlite"
        BINARY_DIR "${TD_CONTRIB_DIR}/sqlite"
        #BUILD_IN_SOURCE TRUE
        CONFIGURE_COMMAND "./configure"
        BUILD_COMMAND "$(MAKE)"
        INSTALL_COMMAND ""
        TEST_COMMAND ""
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment