我通过PuTTY和WinSCP连接到我大学的小型Linux集群,使用后者传输文件,并使用前者编译和运行它们.到目前为止,我的工作已在大学的实验室进行,但今天我在家里做了一些工作,产生了一个有趣的警告.
我上传了整个文件夹,在运行make命令后,我将其作为输出的最后一行:
make:warning:检测到时钟偏斜.您的构建可能不完整.
生成的二进制文件正常工作,并且在构建过程中似乎没有任何其他意外错误.
我似乎能够在上传一些新的/替换文件之后通过构建来触发错误(我在本地编辑所有内容然后上传新版本),所以我想知道它是否像文件修改时间不匹配一样简单?还是更关心的事情?
那么,我应该担心吗?我该如何修复/防止这种情况?
我有一个生成的makefile,然后调用另一个makefile.由于这个makefile调用更多makefile来完成工作,因此它并没有真正改变.因此,它一直认为项目是建立和最新的.
dnetdev11 ~ # make
make: `release' is up to date.
Run Code Online (Sandbox Code Playgroud)
如何强制makefile重建目标?
clean = $(MAKE) -f ~/xxx/xxx_compile.workspace.mak clean
build = svn up ~/xxx \
$(clean) \
~/cbp2mak/cbp2mak -C ~/xxx ~/xxx/xxx_compile.workspace \
$(MAKE) -f ~/xxx/xxx_compile.workspace.mak $(1) \
release:
$(build )
debug:
$(build DEBUG=1)
clean:
$(clean)
install:
cp ~/xxx/source/xxx_utility/release/xxx_util /usr/local/bin
cp ~/xxx/source/xxx_utility/release/xxxcore.so /usr/local/lib
Run Code Online (Sandbox Code Playgroud)
注意:删除名称以保护无辜者
编辑:最终修正版:
clean = $(MAKE) -f xxx_compile.workspace.mak clean;
build = svn up; \
$(clean) \
./cbp2mak/cbp2mak -C . xxx_compile.workspace; \
$(MAKE) -f xxx_compile.workspace.mak $(1); \
.PHONY: release debug clean …Run Code Online (Sandbox Code Playgroud) 几乎我见过的每个Java项目都使用Maven或Ant.它们是很好的工具,我认为任何项目都可以使用它们.但是,什么都发生在使?它用于各种非Java项目,可以轻松处理Java.当然,如果你使用Windows,你必须下载make.exe,但是Ant和Maven也没有随JDK一起提供.
与Java一起使用时,make有一些基本缺陷吗?是不是因为Ant和Maven是用Java编写的?
我有一些我下载的演示,它们带有Makefile.win和Makefile.sgi.如何在Windows中运行这些来编译演示?
我刚刚继承了一些C++代码,这些代码写得不好用一个cpp文件,其中包含main和一堆其他函数.还有一些.h文件包含类及其函数定义.
到目前为止,该程序是使用该命令编译的g++ main.cpp.现在我已经将类.h和.cpp文件分开了,我需要使用makefile还是我仍然可以使用g++ main.cpp命令?
有没有办法配置CLion使用本地makefile来编译代码,而不是CMake?我似乎无法从构建选项中找到方法.
如何根据未设置/值的makefile变量中止make/makefile执行?
我想出了这个,但只有在调用者没有显式运行目标(即make仅运行)时才有效.
ifeq ($(MY_FLAG),)
abort: ## This MUST be the first target :( ugly
@echo Variable MY_FLAG not set && false
endif
all:
@echo MY_FLAG=$(MY_FLAG)
Run Code Online (Sandbox Code Playgroud)
我认为这样的事情是个好主意,但在make的手册中没有找到任何内容:
ifndef MY_FLAG
.ABORT
endif
Run Code Online (Sandbox Code Playgroud) GNU Make中CPPFLAGS和CXXFLAGS之间有什么区别?