使用dbg-macro遇到localtime问题

记录一次纠错的经历,因为自己没又仔细看报错信息,以为是我编译出错,在编译上花费了大量的力气。结果只是Visual Studio不支持localtime,认为它不安全才报错。所以下次一定要注意看报错信息啊。

在github上发现一个有意思的项目,可以在控制台输出有颜色的消息,如图所示

dbg(…) macro output

然后兴高采烈的的clone,使用,但是vs2019居然给我报了一个错误:

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    C4996    'localtime': This function or variable may be unsafe. Consider using localtime_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.    testDBG    E:\vsproject\testDBG\testDBG\dbg.h    553    

 

我先去github上面看issue,但是搜索localtime没有相关的解决方案,只有一个这个Windows Supported?

里面说用cmake生成,于是我去看readme文件,发现可以

mkdir build
cd build
cmake .. -DCMAKE_CXX_STANDARD=17
make

使用cmake后,出现这个错误

$ cmake .. -DCMAKE_CXX_STANDRD=17
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19043.
CMake Error at CMakeLists.txt:18 (add_subdirectory):
  The source directory

    E:/git/dbg-macro/tests/Catch2

  does not contain a CMakeLists.txt file.


CMake Error at CMakeLists.txt:22 (include):
  include could not find requested file:

    Catch


CMake Error at CMakeLists.txt:38 (catch_discover_tests):
  Unknown CMake command "catch_discover_tests".


-- Configuring incomplete, errors occurred!
See also "E:/git/dbg-macro/build/CMakeFiles/CMakeOutput.log".

那就不加参数吧,还是一样报错。

突然看到readme中

原来是自己没有初始化子模块啊...所以上面才说没有找到catch

又报错,连不上,我记得以前paraview项目的子模块初始化也是,后来我去下的源码好像

网上说把(1)在项目的文件夹下有一个 .gitmodules 文件,打开发现这里面的模块的 URL 是 git@github.com:XXXXXX/XXXXXX.git 这种形式。我们把 git 形式的 url 改为 https 形式。

我试试。但是我这个本来就是https的啊

那是什么原因呢?是因为这个dbg本身的问题吗?还需不需要我编译,因为像nohamon就是只包含头文件就可以用的了

还是再回来看vs的报错吧

试了把localtime预定义为localtime_s和定义_CRT_SECURE_NO_WARNINGS都不行

我还是去报一个issue吧。

解决办法

原来不是构建方式的问题,只是Visual Studio不支持localtime

直接在网上搜localtime的问题,就出来了两种解决方案

  • #pragma warning( disable : 4996 )

  • #ifndef _CRT_SECURE_NO_WARNINGS
    
    #define _CRT_SECURE_NO_WARNINGS
    
    #endif

这两个随便那个加进去。

运行成功截图:

总结

看来我应该直接在网上搜索报错信息的,这样转了一大圈,还自以为很帅。而且只有自己开发才需要安装子模块。

2021年8月10日 12:46:08更新:

后来我去提了一个PR解决了这个问题,在github官网下载最新的就没事了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值