Советы по кодированию по вторникам — это очень короткие посты о различных лакомых кусочках, в основном из C++, но также и из других языков программирования, которые я использую. Вы также можете следить за хэштегом #TuesdayCodingTips на Mastodon и Linkedin.

Вы используете CMake и хотите улучшить время компиляции C++? Существует метод, называемый предварительно скомпилированными заголовками. Обычно это довольно сложно настроить, MSVC имеет тенденцию заставлять вас включать предварительно скомпилированный заголовок в каждый отдельный файл .cpp.

С CMake вы можете использовать одну команду, чтобы мгновенно увеличить время компиляции с нулевой инвазивностью. В своем хобби-проекте я сократил время компиляции с 3 минут 30 секунд до всего 30 секунд (в однопоточном CI я сократил время с 7 до 3 30 секунд).

# PROJECT_NAME refers to target that was used with
# add_library or add_executable command
target_precompile_headers ( ${PROJECT_NAME}
    PRIVATE
        <vector>
        <format>
        <map>
        <unordered_map>
        <array>
        <optional>
        <expected>
        <fstream>
        <filesystem>
        <functional>
        <concepts>
        <memory>
        <string>
        <cstdint>
        <DGM/dgm.hpp>
        <TGUI/tgui.hpp>
        <json.hpp>
)

Просто не забудьте включить только те заголовки, которые не меняются часто, предположительно никогда. Хорошими кандидатами являются заголовки std и сторонние зависимости только от заголовков.