Я сталкиваюсь с этой проблемой с Cmake на Ubuntu 24.04, Clang 19, GCC 14 и Clion 2024.3.4. Это примеры для разговоров и книги, поэтому модуль разделения должен быть сделан с помощью MIU и файла реализации. Другие примеры, не являющиеся частями, строятся правильно. < /P>
cmake -E cmake_ninja_dyndep --tdi=Javanese/CMakeFiles/javanese.dir/CXXDependInfo.json --lang=CXX --modmapfmt=gcc --dd=Javanese/CMakeFiles/javanese.dir/CXX.dd @Javanese/CMakeFiles/javanese.dir/CXX.dd.rsp
CMake Error: Output Javanese/CMakeFiles/javanese.dir/balinese.cpp.o provides the `Javanese:Balinese` module
but it is not found in a `FILE_SET` of type `CXX_MODULES`
ninja: build stopped: cannot make progress due to previous errors.
< /code>
Файлы правильно создаются как с GCC, так и с Clang, используя командные строки. < /p>
Clang Build: < /p>
+ clang++ -std=c++23 --precompile Balinese.cppm -o bin/Javanese-Balinese.pcm
+ clang++ -std=c++23 --precompile -fprebuilt-module-path=bin Javanese.cppm -o bin/Javanese.pcm
+ clang++ -std=c++23 -c -fprebuilt-module-path=bin Javanese.cppm -o bin/Javanese.o
+ clang++ -std=c++23 -c -fprebuilt-module-path=bin javanese.cpp -o bin/javanese.o
+ clang++ -std=c++23 -c -fprebuilt-module-path=bin balinese.cpp -o bin/balinese.o
+ clang++ -std=c++23 -r bin/Javanese.o bin/javanese.o bin/balinese.o -o bin/Javanese.Module.o
+ clang++ -std=c++23 -c -fprebuilt-module-path=bin main.cpp -o bin/main.o
+ clang++ -std=c++23 bin/Javanese.Module.o bin/main.o -o bin/main
+ bin/main
Kucing jawa ngomong 'mbelong'
Balinese anak kucing says 'meong'
< /code>
родительский каталог cmakelists.txt < /p>
cmake_minimum_required(VERSION 3.30.5)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# must appear before project()
set(CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS "/usr/bin/clang-scan-deps")
endif ()
project(pragmatic_modules LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_SCAN_FOR_MODULES ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# other subdirectories
add_subdirectory(Javanese)
< /code>
Яванские cmakelists.txt < /p>
cmake_minimum_required(VERSION 3.30.5)
project(Javanese LANGUAGES CXX)
set(module_name javanese)
add_executable(${PROJECT_NAME} main.cpp)
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_23)
target_link_libraries(${PROJECT_NAME} ${module_name})
add_library(${module_name})
target_compile_features(${module_name} PUBLIC cxx_std_23)
target_sources(${module_name}
PUBLIC
FILE_SET cxx_modules TYPE CXX_MODULES
FILES
Balinese.cppm
${PROJECT_NAME}.cppm
PRIVATE
${module_name}.cpp
balinese.cpp
)
< /code>
Разделы miu balinese.cppm < /p>
module;
export module Javanese:Balinese;
namespace Balinese {
export void meong();
}
< /code>
Файл реализации balinese.cpp < /p>
module;
#include
module Javanese:Balinese;
namespace Balinese {
auto meong() -> void {
std::println("Balinese anak kucing says 'meong'");
}
}
Подробнее здесь: https://stackoverflow.com/questions/795 ... -gcc-clang
Cmake не создает модуль разделения, который строится с командными линиями (GCC, Clang ⇐ C++
Программы на C++. Форум разработчиков
1742076141
Anonymous
Я сталкиваюсь с этой проблемой с Cmake на Ubuntu 24.04, Clang 19, GCC 14 и Clion 2024.3.4. Это примеры для разговоров и книги, поэтому модуль разделения должен быть сделан с помощью MIU и файла реализации. Другие примеры, не являющиеся частями, строятся правильно. < /P>
cmake -E cmake_ninja_dyndep --tdi=Javanese/CMakeFiles/javanese.dir/CXXDependInfo.json --lang=CXX --modmapfmt=gcc --dd=Javanese/CMakeFiles/javanese.dir/CXX.dd @Javanese/CMakeFiles/javanese.dir/CXX.dd.rsp
CMake Error: Output Javanese/CMakeFiles/javanese.dir/balinese.cpp.o provides the `Javanese:Balinese` module
but it is not found in a `FILE_SET` of type `CXX_MODULES`
ninja: build stopped: cannot make progress due to previous errors.
< /code>
Файлы правильно создаются как с GCC, так и с Clang, используя командные строки. < /p>
Clang Build: < /p>
+ clang++ -std=c++23 --precompile Balinese.cppm -o bin/Javanese-Balinese.pcm
+ clang++ -std=c++23 --precompile -fprebuilt-module-path=bin Javanese.cppm -o bin/Javanese.pcm
+ clang++ -std=c++23 -c -fprebuilt-module-path=bin Javanese.cppm -o bin/Javanese.o
+ clang++ -std=c++23 -c -fprebuilt-module-path=bin javanese.cpp -o bin/javanese.o
+ clang++ -std=c++23 -c -fprebuilt-module-path=bin balinese.cpp -o bin/balinese.o
+ clang++ -std=c++23 -r bin/Javanese.o bin/javanese.o bin/balinese.o -o bin/Javanese.Module.o
+ clang++ -std=c++23 -c -fprebuilt-module-path=bin main.cpp -o bin/main.o
+ clang++ -std=c++23 bin/Javanese.Module.o bin/main.o -o bin/main
+ bin/main
Kucing jawa ngomong 'mbelong'
Balinese anak kucing says 'meong'
< /code>
родительский каталог cmakelists.txt < /p>
cmake_minimum_required(VERSION 3.30.5)
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
# must appear before project()
set(CMAKE_CXX_COMPILER_CLANG_SCAN_DEPS "/usr/bin/clang-scan-deps")
endif ()
project(pragmatic_modules LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_SCAN_FOR_MODULES ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# other subdirectories
add_subdirectory(Javanese)
< /code>
Яванские cmakelists.txt < /p>
cmake_minimum_required(VERSION 3.30.5)
project(Javanese LANGUAGES CXX)
set(module_name javanese)
add_executable(${PROJECT_NAME} main.cpp)
target_compile_features(${PROJECT_NAME} PUBLIC cxx_std_23)
target_link_libraries(${PROJECT_NAME} ${module_name})
add_library(${module_name})
target_compile_features(${module_name} PUBLIC cxx_std_23)
target_sources(${module_name}
PUBLIC
FILE_SET cxx_modules TYPE CXX_MODULES
FILES
Balinese.cppm
${PROJECT_NAME}.cppm
PRIVATE
${module_name}.cpp
balinese.cpp
)
< /code>
Разделы miu balinese.cppm < /p>
module;
export module Javanese:Balinese;
namespace Balinese {
export void meong();
}
< /code>
Файл реализации balinese.cpp < /p>
module;
#include
module Javanese:Balinese;
namespace Balinese {
auto meong() -> void {
std::println("Balinese anak kucing says 'meong'");
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79511862/cmake-not-building-partition-module-that-builds-with-command-lines-gcc-clang[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия