平时少不了在linux下写Demo,每次都gcc -o 或者单独写个不可移植的Makefile真的很麻烦,所以写个通用的Makefile很重要。我们在shell下make,有时当前目录下是子目录,有时是编译目录。这点需要区分。这里约定,如果当前目录下是子目录,则需要一个dirs文件。我们假设一个目录如下:
-rwxr--r-- 1 stewart stewart 68 Aug 8 09:36 dirs
drwxr-xr-x 2 stewart stewart 4096 Aug 14 15:49 Iteractive_Server_Main
drwxr-xr-x 2 stewart stewart 4096 Aug 14 15:48 Iterative_Logging_Server
drwxr-xr-x 2 stewart stewart 4096 Aug 9 14:47 Logging_Client
drwxr-xr-x 2 stewart stewart 4096 Aug 12 09:23 Logging_Server
这里的dirs文件内容:
DIRS=Logging_Server
DIRS+=Iterative_Logging_Server
DIRS+=Server_Main
代表依次编译Logging_Server , Iterative_Logging_Server和Server_Main三个目录。
如果当前目录就是需要编译的目录,这里约定需要一个sources文件,制定编译的依赖,目标名以及目标类型。假设有个目录如下:
-rwxr--r-- 1 stewart stewart 883 Aug 7 13:35 Iterative_Logging_Server.cpp
-rwxr--r-- 1 stewart stewart 1334 Aug 7 14:02 Iterative_Logging_Server.h
-rwxr--r-- 1 stewart stewart 2001 Aug 7 09:55 Logging_Handler.cpp
-rwxr--r-- 1 stewart stewart 1014 Aug 7 09:56 Logging_Handler.h
-rwxr--r-- 1 stewart stewart 324 Aug 9 14:20 sources
这里的sources文件如下:
T