Вопрос или проблема
Я пытаюсь использовать модули C++ в новом проекте.
import std;
int main(){
std::print("Hello, world!");
}
Это должно компилироваться под C++23. Документация CMake предполагает, что если вы используете CMake 3.28+, Clang 18+ и libc++, это можно скомпилировать на практике.
Мне удалось установить на Ubuntu (wsl) CMake 3.30 и Clang 19. Оба, казалось, работают как нужно. Однако я не нашел достаточной документации о том, как установить libc++, который, похоже, не установлен, но необходим для работы import std. Я пытался следовать этому посту, но, похоже, репозиторий перемещен? Документы на сайте libc++ имели аналогичную проблему. Также, если есть более простой способ скомпилировать этот код с CMake, я был бы рад этому.
Ответ или решение
Для компиляции кода с использованием модулей C++ в проекте с помощью CMake и библиотеки libc++
, выполните следующие шаги:
Установка необходимых инструментов
-
Убедитесь, что у вас установлены
CMake
,Clang
иlibc++
. Вы уже указали, что у вас установлены CMake 3.30 и Clang 19, что является отличным началом. -
Установка
libc++
иlibc++abi
:
Чтобы установитьlibc++
иlibc++abi
, выполните следующую команду в терминале WSL:sudo apt install libc++-dev libc++abi-dev
-
Проверьте установку:
Убедитесь, чтоlibc++
успешно установлен, выполнив команду:dpkg -l | grep libc++
Настройка проекта CMake
-
Создайте структуру вашего проекта:
Создайте новую папку для вашего проекта и создайте файлCMakeLists.txt
в этой папке.mkdir MyProject cd MyProject touch CMakeLists.txt
-
Заполните
CMakeLists.txt
:
Вставьте следующий код в ваш файлCMakeLists.txt
:cmake_minimum_required(VERSION 3.30) project(MyProject LANGUAGES CXX) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) # Укажите путь к библиотекам libc++ find_package(LLVM REQUIRED CONFIG) if(NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 19.0) message(FATAL_ERROR "Классификация требует версию компилятора Clang 19 или новее.") endif() add_executable(main main.cpp) target_compile_options(main PRIVATE -stdlib=libc++)
-
Создайте выполненный файл
main.cpp
:
В ту же папку создайте файлmain.cpp
и вставьте ваш исходный код:import std; int main(){ std::print("Hello, world!"); }
Компиляция проекта
-
Создайте папку для сборки:
В терминале WSL выполните:mkdir build cd build
-
Соберите проект:
Запустите команды CMake и сборки:cmake .. make
Запуск
После успешной сборки запустите скомпилированный исполняемый файл:
./main
Заключение
Теперь ваш проект должен компилироваться и правильно выводить "Hello, world!". Если возникнут дополнительные проблемы, например, ошибки во время компиляции, убедитесь, что все зависимости установлены правильно, а также проверьте текущую версию компилятора и стандартов C++.