I.C*_*ner 5 c++ clion c++20 c++-modules
我正在 C++ 中测试模块,但不断收到以下错误:
linker input file unused because linking not done
和
ld: file not found: CMakeFiles/TestModule.dir/src/A.cppm.o
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Run Code Online (Sandbox Code Playgroud)
这是我编写的以下代码:
模块:A.cppm
ld: file not found: CMakeFiles/TestModule.dir/src/A.cppm.o
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
Run Code Online (Sandbox Code Playgroud)
我的 main.cpp 文件:
export module A;
export namespace Lib_A {
int getNumberOne() { return 1; }
int getNumberTwo() { return 2; }
}
Run Code Online (Sandbox Code Playgroud)
现在我的 CMakeFile:
cmake_minimum_required(VERSION 3.24)
project(TestModule)
set(CMAKE_CXX_STANDARD 20)
add_executable(TestModule src/main.cpp src/A.cppm)
Run Code Online (Sandbox Code Playgroud)
我正在使用 CLion 顺便说一句,并查看了他们有关模块支持的文档,我似乎仍然无法弄清楚问题可能是什么。
我还在set(CMAKE_CXX_FLAGS "-fmodules-ts")我的 CMakeCXXCompiler.cmake 文件中添加了内容,因为这是建议我应该做的事情;然而,这并没有解决问题。
我对 C++ 相当陌生;希望有人能帮助我。感谢您的时间!!
我今天遇到了同样的问题。解决方案是将.cppm扩展名更改为.cpp.
CMake 将许多文件扩展名识别为 C++。这些定义在CMAKE_CXX_SOURCE_FILE_EXTENSIONS. cppm包含在此列表中,至少对于 CMake 版本 3.25.1 而言是如此,所以我不确定为什么更改扩展名来.cpp解决该问题。也许其他人知道。考虑到 C++ 模块的新程度,这可能是一个错误。