Closed zhaoyaogit closed 3 years ago
能把报错信息发下吗?
fmtlog你说是c++17的,但是依赖fmt库,我看fmt库描述是c++20的。所以矛盾吧。 也就是理论上,你这个fmtlog用c++17压根编译不过,必须是支持c++20才能编译通过吧。
fmt库只需要C++11
1,下载下来直接用cmake生成vs2019工程编译,fmt可以编译通过,但是提示错误: cl : 命令行 error D8016: “/O2”和“/RTC1”命令行选项不兼容 2,修改以上错误,将优化改为自定义后,调整c++语言标准为c++17,继续编译。 报错: 1> fmtlog.cc 1> D:\99临时\fmtlog\fmtlog-inl.h(461,26): error C2027: 使用了未定义类型“std::ios_base” 1> C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29333\include\iosfwd(168): message : 参见“std::ios_base”的声明 1> D:\99临时\fmtlog\fmtlog-inl.h(456): message : 在编译 类 模板 成员函数“void fmtlogT<0>::setLogFile(const char *,bool)”时 1> D:\99临时\fmtlog\fmtlog.h(691): message : 查看对正在编译的 类 模板 实例化“fmtlogT<0>”的引用 1> D:\99临时\fmtlog\fmtlog-inl.h(461,1): error C3861: “failure”: 找不到标识符 1>已完成在项目“fmtlog-shared.vcxproj”中生成目标“ClCompile”的操作 - 失败。 3,c++语言标准改为latest,又会报一系列其他错误。 注:linux编译没有尝试
我提交了修改,加了
谢谢,编译通过了。 vs2019+c++17
使用cmake生成vs2019工程编译报错。 一开始是编译选项冲突,解决后又报语法错误,编译工具从最新改为c++17,又换成其他语法错误了。