0

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

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

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

如果有人可以帮助我开始这将是很棒的。与此同时,我正在尝试通读文献,但它非常压倒性。

4

3 回答 3

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.

如果您希望能够#include SFML 中的标头而不每次都包含目录名称,那么您还可以编写:

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

网站上提供了有关编写 CMake 文件和运行 CMake 的更多文档。

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

cmake_minimum_required(VERSION 2.8)        # Quell warnings.

干杯。

于 2013-02-04T07:14:40.150 回答
2

它本身可能很简单,但只是想推荐genmake.pl,我在学校项目中使用它效果很好。它非常易于使用,它会为您生成一个骨架 Makefile,您需要填写诸如SFML.

于 2013-02-04T06:04:51.943 回答
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 下载和使用,我会四处搜索,看看是否可以为您找到合适的示例。

于 2013-02-04T11:25:05.750 回答