繁体   English   中英

C++ 模块:子命令失败

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM