为C ++程序编写makefile

时间:2013-02-04 05:53:03

标签: c++ makefile cmake

有人可以帮我写第一个makefile吗?

我在helloworld.cpp中有一个/path/to/main/code/helloworld.cpp代码。 然后我刚刚添加了一个.h文件#include "SFML/network.hpp"

现在SFML库保存在/path/to/SFML/Library

如果有人可以帮助我开始这项工作,那就太好了。与此同时,我试图通过文献阅读,但它非常压倒性。

3 个答案:

答案 0 :(得分:3)

虽然您可能需要学习传统的GNU Makefile语法才能使用其他项目,但我建议您将CMake用于自己的项目,因为它更简单,更直观。

您示例的CMake文件将放在项目根目录中名为CMakeLists.txt的文件中(与本例中的源相同),如下所示:

project(HelloWorld)                        # Name your project.
add_executable(helloworld helloworld.cpp)  # Specify an executable to build.
link_directories(/path/to/SFML)            # Tell it where your libraries are.
target_link_libraries(helloworld Library)  # Tell it which library to link.

如果您希望每次都能在不包含目录名的情况下从SFML中#include标头,那么您也可以写:

include_directories(SFML)                  # Tell it where your headers are.

有关编写CMake文件和运行CMake的更多文档,请参见website

最后,CMake经常会发出一条嘈杂但无害的消息,要求您在CMakeLists.txt文件的顶部放置一行:

cmake_minimum_required(VERSION 2.8)        # Quell warnings.

干杯。

答案 1 :(得分:2)

它本身可能很简单,但只是想推荐genmake.pl,我用这个对我的学校项目有很大影响。它非常易于使用,它为您生成一个骨架Makefile,您需要填写SFML的路径。

答案 2 :(得分:1)

如果您正在使用ACE(自适应通信环境),它会附带一个非常强大的makefile创建实用程序,称为MPC(Makefile Project Creator

要编译一个简单的程序,并自动生成GNU makefile,最小的例子可能是:

project(*my_project) : baseWorkspace {
       exename = my_project
       exeout = ./
       Source_Files {
          main.cpp
       }
   }

我发现使用这个工具的好处在于它可以继承“基础”工作空间,几乎就像C ++中的多态。 “base”中定义的库在当前项目中使用,允许程序员利用各种构建块轻松地快速操作和创建项目。

我确信只有ACE的MPC部分可以通过RPM下载和使用,我会搜索并查看是否可以为您找到合适的示例。