#c #cmake
Вопрос:
Это широко документировано о том, как создавать llvm и clang, чтобы использовать их в качестве автономных инструментов в Windows, и я создаю сценарий для запуска этого в CI. Сценарий bat вызывает cmake для шага настройки, но выполнение шага настройки занимает более 5 минут, а сборка занимает еще ~40 минут.
в Linux при выполнении шага настройки cmake он выполняется довольно быстро и больше не создает артефактов, что улучшает время компиляции.
Мой шаг настройки выглядит следующим образом:
cmake -G"Visual Studio 16 2019" ^
-DBUILD_SHARED_LIBS=Off ^
-DLLVM_INCLUDE_TESTS=Off ^
-DLLVM_ENABLE_DIA_SDK=1 ^
-DLLVM_TARGETS_TO_BUILD="X86" ^
-DCMAKE_BUILD_TYPE=Release ^
-DLLVM_ENABLE_LIBCXX=OFF ^
-DLLVM_BUILD_LLVM_C_DYLIB=ON ^
-DLLVM_POLLY_LINK_INTO_TOOLS=ON ^
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON ^
-DLLVM_LINK_LLVM_DYLIB=ON ^
-DLLVM_ENABLE_EH=ON ^
-DLLVM_ENABLE_FFI=OFF ^
-DLLVM_ENABLE_RTTI=ON ^
-DLLVM_INCLUDE_DOCS=OFF ^
-DLLVM_INCLUDE_TESTS=OFF ^
-DLLVM_INSTALL_UTILS=ON ^
-DLLVM_ENABLE_Z3_SOLVER=OFF ^
-DLLVM_OPTIMIZED_TABLEGEN=ON ^
-DLLVM_TARGETS_TO_BUILD=all ^
-DLLDB_USE_SYSTEM_DEBUGSERVER=ON ^
-DLLDB_ENABLE_PYTHON=OFF ^
-DLLDB_ENABLE_LUA=OFF ^
-DLLDB_ENABLE_LZMA=ON ^
-DLLDB_INCLUDE_TESTS=OFF ^
-DLIBOMP_INSTALL_ALIASES=OFF ^
-DLLVM_ENABLE_PROJECTS="clang;clang-tools-extra;mlir;polly" ^
-DLLVM_ENABLE_RUNTIMES="compiler-rt" ^
-DCMAKE_INSTALL_PREFIX=%INSTALL_FOLDER%llvm ^
-Thost=x64 ^
-B %BUILD_FOLDER%llvm ^
-S %SOURCE_FOLDER%llvm-project-llvmorg-12.0.1llvm
есть ли что-нибудь, что я могу передать в cmake, чтобы проверить, произошла ли конфигурация уже до ее перенастройки? a-только-если-не-настроено или что-то в этом роде.
Комментарии:
1. Насколько мне известно, нет. Обычно, когда в этой ситуации я сам обхожу cmake, вместо этого просто вызываю систему сборки напрямую (например, ninja, make). Так что, может быть, вы можете просто добавить флаг в свой сценарий для этого?
2. это позволит игнорировать незначительные изменения в конфигурации cmake. если мне нужно коснуться параметров, которые следует перенастроить, потому что значения изменились. если я добавлю свой собственный тест (например, проверю, существует ли папка), это не сработает.
3. Я понимаю. Надеюсь, у кого-нибудь найдется хороший ответ.
4. Просто создайте проект. Если какой-либо файл, влияющий на конфигурацию, был изменен, CMake автоматически перенастраивает проект перед его созданием. (Есть некоторые изменения, которые могут повлиять на конфигурацию незаметным образом: замена исполняемого файла компилятора, добавление или удаление библиотеки в системе и т.д. В этом случае вам необходимо повторить настройку вручную.)
5. Вы
LLVM_TARGETS_TO_BUILD
ставили дважды. Сначала просто X86, а во второй раз «все», которое выигрывает. Вам действительно следует отсортировать свой список-D
флагов, чтобы избежать таких ошибок.