相关疑难解决方法(0)

Makefile,"配置"文件和其他编译工具 - 它们如何工作?他们为什么按照他们的方式工作?

我还是UNIX/Linux世界的新手,尤其是相关工具,比如GCC编译器.也就是说,我仍然是makefiles和类似的东西的新手(我在Windows上使用MinGW),因为到目前为止,我的大多数开发都是使用像Visual Studio和Eclipse这样的IDE.

当我打开一个典型的项目文件夹时,我看到这样的文件:

configure
make
INSTALL
install-sh  (or a variant)
Run Code Online (Sandbox Code Playgroud)

这里有很多我不理解的东西,我的主要问题是:

  1. 这些之间有什么区别,为什么我们需要每一个?(在IDE世界中,你所拥有的只是一个项目文件;就是这样.所以我很困惑为什么我们这里不仅仅是一个makefile.)

  2. 这些文件是如何生成的?对于小型项目,您可以手工编写它们,但对于像GCC这样的大型项目,即使尝试也是荒谬的.我发现编辑这些文件很痛苦,我得出的结论是我不应该手动修改它们.但如果是这样,那么人们通常使用哪些工具来添加和修改这些文件?

  3. 为什么他们不在makefile中使用通配符?为什么每个目标文件都有一行?这是因为限制,还是有优势?

  4. 拥有一个调用编译器的shell脚本和每个文件,以及一个makefile做同样的事情有什么区别?在Windows中,我很想在文件夹中创建批处理文件,并使用它编译所有内容 - 不需要只有一个文件.有什么不同?为什么不只是一个.sh文件,编译一切?

奖金问题:

  • 是否有"标准"makefile格式?我见过不同的make工具不接受彼此的格式......我怎么知道使用什么?GCC只是通常的工具,还是每个人都应遵循一些标准?

我可能会有更多问题,因为我对这类项目的结构有了更多了解,但就目前而言,这些是我最大的问题.:)

mingw makefile configure makefile-project

9
推荐指数
2
解决办法
4470
查看次数

生成make文件的最佳实践

背景:

我对Make还是比较陌生,因此我开始为我最近制作的Othello游戏构建makefile。我当前的makefile比较简单。但是,我希望进一步完善它并添加构建和存档功能。

问题1:为什么不打扫工作?

问题2:对于归档,我打算使用

# tar cvzf *.o Othello
Run Code Online (Sandbox Code Playgroud)

存档时,将编译时生成.o和可执行文件。这是一种好的标准做法还是有更好的方法呢?

问题3:对于构建部分,我计划使用./Othello运行可执行文件,这是在Makefile中进行构建的最佳实践吗?

git存储库发布在下面,谢谢您的时间

全部:奥赛罗

Othello: main.o Myothello.o space.o game.o
        clang++ main.o Myothello.o space.o game.o -o Othello

main.o: main.cc
        clang++ -c main.cc

game.o: game.cc
        clang++ -c game.cc

Myothello.o: Myothello.cc
            clang++ -c Myothello.cc

space.o: space.cc
        clang++ -c space.cc

clean:
rm -f *.o core *.core
rm MyOthello
Run Code Online (Sandbox Code Playgroud)

makefile

2
推荐指数
1
解决办法
2682
查看次数

标签 统计

makefile ×2

configure ×1

makefile-project ×1

mingw ×1