有人可以帮我写第一个makefile吗?
我在helloworld.cpp
中有一个/path/to/main/code/helloworld.cpp
代码。
然后我刚刚添加了一个.h文件#include "SFML/network.hpp"
。
现在SFML库保存在/path/to/SFML/Library
如果有人可以帮助我开始这项工作,那就太好了。与此同时,我试图通过文献阅读,但它非常压倒性。
答案 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下载和使用,我会搜索并查看是否可以为您找到合适的示例。