【问题标题】:CGAL - clock slew when making?CGAL - 制作时时钟摆动?
【发布时间】:2015-10-02 12:31:43
【问题描述】:

我已经厌倦了手动执行一个又一个命令,只是为了编译一个使用 CGAL 的 C++11 程序。

所以我想我会创建一个小的 .sh 文件来为我处理它:

#!/bin/bash

cgal_create_cmake_script &&
cmake . &&
echo "set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -std=c++11\")" >> CMakeList.txt &&
make

我对 bash 脚本了解不多,但这个 似乎 运行良好。但是,我不断收到警告

make: 警告:文件“Makefile”的修改时间为 2.4 秒

make[1]: 警告:文件 'CMakeFiles/Makefile2' 的修改时间为 2.4 秒

make[2]: 警告:文件 'CMakeFiles/my_dir.dir/progress.make' 的修改时间为 2.4 秒

现在,尽管我想要一台能够预测未来的计算机,但我对此并不满意。我做错了什么?

【问题讨论】:

  • 听起来您正在使用远程文件系统 (NFS?),并且本地计算机和服务器上的时钟不同步。要么修复时钟,要么在调用 make 之前添加 sleep 3,让您的机器有机会“赶上”。
  • @chepner:确实,这似乎是问题所在。您想详细说明一下,以便我可以接受它作为答案吗?
  • 因为有很多方法我只想添加对How to activate C++ 11 in CMake?的引用。

标签: c++ c++11 cmake makefile cgal


【解决方案1】:

您的Makefile 正在远程文件系统上创建,因此使用服务器的时钟记录时间戳,这似乎很快(或者您的机器的时钟很慢)。但是,make 正在您的本地计算机上运行,​​因此当它看到您的 Makefile 时,它似乎是在未来创建的。

正确的做法是修复已关闭的时钟。 (理想情况下,两台机器都应该使用 NTP 之类的东西来与标准时钟同步。)

快速的技巧是将sleep 命令添加到列表中

cgal_create_cmake_script &&
cmake . &&
echo "set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS} -std=c++11\")" >> CMakeList.txt &&
sleep 3 &&
make

这样您的本地时钟可以“赶上”并使远程文件看起来是在过去而不是将来创建的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多