簡體   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