[英]C++ Module: subcommand fails
我正在测试 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.
这是我编写的以下代码:
模块:A.cppm
export module A;
export namespace Lib_A {
int getNumberOne() { return 1; }
int getNumberTwo() { return 2; }
}
我的 main.cpp 文件:
#include <iostream>
import A;
int main() {
using namespace Lib_A;
std::cout << getNumberOne() << std::endl;
std::cout << getNumberTwo() << std::endl;
return 0;
}
现在我的 CMakeFile:
cmake_minimum_required(VERSION 3.24)
project(TestModule)
set(CMAKE_CXX_STANDARD 20)
add_executable(TestModule src/main.cpp src/A.cppm)
我正在使用 CLion 顺便说一下,在查看了他们关于模块支持的文档后,我似乎仍然无法弄清楚可能是什么问题。
我还在我的 CMakeCXXCompiler.cmake 文件中添加了set(CMAKE_CXX_FLAGS "-fmodules-ts")
,因为这是我应该做的建议; 但是,这并没有解决问题。
我是 C++ 的新手; 希望有人能帮助我。 感谢您的时间!!
我今天遇到了同样的问题。 解决方案是将 .cppm 扩展名更改为 .cpp。
有许多文件扩展名 CMake 识别为 C++。这些在 CMAKE_CXX_SOURCE_FILE_EXTENSIONS 中定义。 “cppm”包含在此列表中,至少对于 CMake 版本 3.25.1,所以我不确定为什么将扩展名更改为 .cpp 可以解决问题。 也许别人知道。 考虑到 C++ 模块有多新,这可能是一个错误。 希望这可以帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.