Перестроение зависимостей модуля C++20C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Перестроение зависимостей модуля C++20

Сообщение Anonymous »

Я создал модуль C++20 (файл Module.ixx):

Код: Выделить всё

export module M;
void foo() {}
export void bar() { foo(); }
Затем я создал код, использующий этот модуль (main.cc):

Код: Выделить всё

import M;
int main() { bar(); }
CMakeLists.txt выглядит следующим образом:

Код: Выделить всё

cmake_minimum_required(VERSION 3.30.0)

set(CMAKE_CXX_STANDARD 23)

project(test)

add_executable(app main.cc)
target_sources(app PUBLIC FILE_SET CXX_MODULES FILES module.ixx)
После этого я все скомпилировал с помощью CMake:

Код: Выделить всё

cmake -B build -G Ninja
cmake --build build
Затем я изменил тело функции foo и снова запустил сборку:

Код: Выделить всё

cmake --build build
CMake скомпилировал модуль.ixx и main.cc
Редактирование модуля не изменило его двоичный интерфейс. Разве в этой ситуации не следует компилировать только сам модуль? Разве это еще не поддерживается компиляторами или CMake? Или это даже не предполагалось при проектировании модулей (хотя это очевидная оптимизация сборки)?

Подробнее здесь: https://stackoverflow.com/questions/798 ... pendencies
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»