linux编程中的多目录“make”
Posted
技术标签:
【中文标题】linux编程中的多目录“make”【英文标题】:multi-directory "make" in linux programming 【发布时间】:2012-04-25 07:22:43 【问题描述】:假设我们有一个文件列表:
源 一个 b c 生成文件每个文件夹中有很多 .cc 和 .h 文件。 Makefile怎么写??
当我写这样的路径时 ./a/a.cc 或 ../a/a.cc
会发生错误。
但是当我把文件放在同一个目录时 并写为 a.cc。 一切正常。
我在 cygwin 上运行它。 谁能帮帮我?
【问题讨论】:
发布您的 makefile 示例会很有帮助。 应该与 ./a/a.cc 一起工作,但你必须确保依赖关系是正确的。 Makefile 永远不会改变工作目录 可能与此重复:***.com/q/9313760/1025391 【参考方案1】:wildcard
函数是您正在寻找的:http://www.gnu.org/software/make/manual/html_node/Wildcards.html
在 Linux 上,我更喜欢 Automake/Autoconf 构建系统:http://de.wikipedia.org/wiki/GNU_Build_System
替代方案可能是 CMake:http://www.cmake.org/
【讨论】:
我是新人。 *** 真的是一个聚集了全世界***极客的优秀网站。这些答案非常有用,我都接受了。有人收到了吗? 感谢您的建设性意见~【参考方案2】:从不太清晰的目录图中,您的Makefile
中似乎缺少src/
目录前缀。例如。编译src/a/a.cc
,使用:
src/a/a.o: src/a/a.cc
$(CXX) $(CXXFLAGS) -c -o $@ $<
但是:帮自己一个忙,使用真正的构建系统,例如CMake。它是跨平台的,可以生成 IDE 项目文件(例如 Visual Studio、Xcode、Eclipse、CodeBlocks 等),级别更高,并为您进行自动依赖跟踪。
【讨论】:
【参考方案3】:您遗漏了很多细节(例如,您想要放置目标文件的位置),但 VPATH
可能就是您要查找的内容。
VPATH = src/a src/b src/c
# Now you can write rules as if the .cc & .h files were in the current directory.
%.o: %.cc
do something with $<
foo.o: foo.cc bar.h
do something special with $<
【讨论】:
以上是关于linux编程中的多目录“make”的主要内容,如果未能解决你的问题,请参考以下文章