在Windows上通过CLion配置C++,并在WSL的 Ubuntu中使用Clang和 CMake

编程语言 2026-07-10

我希望在Windows上使用JetBrains CLion IDE开发C++20应用,并在WSL上使用Clang编译器和构建工具。 头文件无法识别并抛出错误 -

错误:命名空间 'std' 中没有名为 'format' 的成员

#include <iostream>
#include <format>
#include <string>

int main() {
    std::string message = std::format("The answer is {}.", 42);
    std::cout << message << std::endl;
    return 0;
}

以下是在CLion中的设置 -

CLion IDE setup build tools

这里的CMake选项、指令、构建选项和环境字段都是空的,仅有占位符

CLion IDE setup Debug

我也尝试在CMake文件中显式设置标志 -

cmake_minimum_required(VERSION 3.28.3)
project(cpptut)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
    # Force Clang to use LLVM's libc++ instead of GNU's libstdc++
    add_compile_options(-stdlib=libc++)
    add_link_options(-stdlib=libc++)
endif()

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")

add_executable(cpptut main.cpp
        files.cpp
        strings.cpp
        test.cpp)
Ubuntu clang version 18.1.3 (1ubuntu1)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin

我还尝试运行这个命令:

clang++ -stdlib=libstdc++ -gcc-toolchain=/usr/lib/gcc/x86_64-linux-gnu/18

CMake调试加载日志:

/usr/bin/cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_COMPILER=/usr/bin/clang-18 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-18 -G "Unix Makefiles" -S /home/username/cpptut -B /home/username/cpptut/cmake-build-debug-wsl
-- Configuring done (0.0s)
-- Generating done (0.0s)
-- Build files have been written to: /home/username/cpptut/cmake-build-debug-wsl

[Finished]

非常感谢任何关于解决此设置问题的帮助

解决方案

根据 Clang官网

默认情况下,Clang 16及更高版本会按C++17标准构建C++代码。

因此在 Compiler Options 中添加 --std=c++20 解决了问题,因为std:format是 C++20的特性。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章