我正在尝试在Maverick 10.9上的命令行上编译一个项目.该项目在Linux上完美编译.显然,MacOSX上的ctime似乎存在问题.错误是
$ make Compiling src//core/AbstractARAClient.cpp In file included from src//core/AbstractARAClient.cpp:5: In file included from include/AbstractARAClient.h:8: In file included from include/ARAMacros.h:14: In file included from include/Address.h:9: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/sstream:174: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ostream:131: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:18: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/mutex:176: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__mutex_base:15: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/chrono:279: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ctime:56:9: error: no member named 'clock_t' in the global namespace using ::clock_t; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ctime:58:9: error: no member named 'time_t' in the global namespace; did you mean 'size_t'? using ::time_t; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/6.0/include/stddef.h:42:23: note: 'size_t' declared here typedef __SIZE_TYPE__ size_t; In file included from src//core/AbstractARAClient.cpp:5: In file included from include/AbstractARAClient.h:8: In file included from include/ARAMacros.h:14: In file included from include/Address.h:9: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/sstream:174: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ostream:131: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:18: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/mutex:176: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__mutex_base:15: In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/chrono:279: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ctime:60:9: error: no member named 'clock' in the global namespace using ::clock; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ctime:61:9: error: no member named 'difftime' in the global namespace using ::difftime; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ctime:62:9: error: no member named 'mktime' in the global namespace using ::mktime; ~~^ /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ctime:63:9: error: no member named 'time' in the global namespace using ::time;
我在网上搜索过,如果项目中有一个名为'time.h'的标题,就会出现问题(就像这个项目中的情况一样).ctime的实际不完整实现似乎也存在问题(但通常人们通过xcode引用安装命令行utils).
我想知道一般问题是什么,最后如何在mac上实际编译代码.相反,对于存储库中的代码,我在第53行的Makefile中添加了一个stdlib选项
CFLAGS_DEBUG = -g -Wall -stdlib=libc++
C++ 11选项已在Makefile的上一行中设置.
TIA
答案或多或少都很明显.该项目包含一个标题Time.h
(和相应的类Time
).不幸的是,MacOSX的文件系统是区分大小写的,这意味着这与现有的冲突time.h
在/usr/include
.
您可以#include <ctime>
事先包含系统time.h(含义),Time.h
也可以简单地将文件重命名为其他内容(例如MyTime.h
).