在Windows上通过CLion配置C++,并在WSL的 Ubuntu中使用Clang和 CMake
我希望在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中的设置 -

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

我也尝试在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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。