大家好,今天小编来为大家解答makefile命令这个问题,makefile命令在同一行很多人还不知道,现在让我们一起来看看吧!
linux如何查看makefile
用ls指令列举,用cat指令显示
如何使用CMAKE生成makefile文件
CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性。只是CMake的组态档取名为CmakeLists.txt。Cmake并不直接建构出最终的软件,而是产生标准的建构档(如linux的Makefile或WindowsVisualC++的projects/workspaces),然后再依一般的建构方式使用。
在linux平台下使用CMake生成Makefile并编译的流程如下:
编写CmakeLists.txt。
执行命令“cmakePATH”或者“ccmakePATH”生成Makefile(PATH是CMakeLists.txt所在的目录)。
使用make命令进行编译
工程实例:
一.编写各层CMakeLists.txt
主目录的主程序main.cpp
#include"hello.h"
externHellohello;
intmain()
{
hello.Print();
return0;
}
主目录的CMakeLists.txt
#totherootbinarydirectoryoftheprojectas${MAIN_BINARY_DIR}.
project(MAIN)
#versionsupport
cmake_minimum_required(VERSION2.8)
#Recurseintothe"Hello"and"Demo"subdirectories.Thisdoesnotactually
#causeanothercmakeexecutabletorun.Thesameprocesswillwalkthrough
#theproject'sentiredirectorystructure.
add_subdirectory(Hello)
add_subdirectory(Demo)
#MakesurethecompilercanfindincludefilesfromourHellolibrary.
include_directories(${MAIN_SOURCE_DIR}/Hello)
#MakesurethelinkercanfindtheHelloDemolibraryonceitisbuilt.
link_directories(${HELLO_BINARY_DIR}/Hello)
link_directories(${HELLO_BINARY_DIR}/Demo)
#definethesourcecoedesofcurrentdirectoryasDIR_SRCS
AUX_SOURCE_DIRECTORY(.DIR_SRCS)
#Addexecutablecalled"MAIN"thatisbuiltfromthesourcefiles
add_executable(Main${DIR_SRCS})
#LinktheexecutabletotheHelloDemolibrary.
target_link_libraries(MainHelloDemo)
定义项目名project(MAIN),使得当前目录可以用${MAIN_SOURCE_DIR},由于有2个子目录,所以需要add_subdirectory它们。由于主程序会使用到其他库,因而也需要指定连接库所在目录。
主目录下的作用是利用add_executable将当前目录下的源文件编译成Main程序,然后通过target_link_libraries链接Hello和Demo库。由于主程序文件使用了hello.h文件,所以要include_directories该目录。
---------------------------------------------------------------------------------------------------
子目录Demo的子程序demo.c
#include"hello.h"
Hellohello;
子目录Demo的CMakeLists.txt
#MakesurethecompilercanfindincludefilesfromourHellolibrary.
include_directories(${MAIN_SOURCE_DIR}/Hello)
#definethesourcecoedesofcurrentdirectoryasDIR_DEMO_SRCS
AUX_SOURCE_DIRECTORY(.DIR_DEMO_SRCS)
#Addlibrarycalled"Demo"thatisbuiltfromthesourcefiles
add_library(Demo${DIR_DEMO_SRCS})
Demo目录下的CMakeLists主要作用是利用add_library将当前目录源码编译成Demo库,由于该库使用到hello.h文件,所以要include_directories该目录。
---------------------------------------------------------------------------------------------------
子目录Hello的子程序hello.h
#ifndef_hello_h
#define_hello_h
classHello
{
public:
voidPrint();
};
#endif
子目录Hello的子程序hello.c
#include"hello.h"
#include
voidHello::Print()
{
printf("Hello,World!\n");
}
子目录Hello的CMakeLists.txt
#definethesourcecoedesofcurrentdirectoryasDIR_HELLO_SRCS
AUX_SOURCE_DIRECTORY(.DIR_HELLO_SRCS)
#Addlibrarycalled"hello"thatisbuiltfromthesourcefiles
add_library(Hello${DIR_HELLO_SRCS})
Hello目录下的CMakeLists主要作用是利用add_library将当前目录源码编译成Hello库。
---------------------------------------------------------------------------------------------------
二.执行cmake命令
至此我们完成了项目中所有CMakeLists.txt文件的编写,进入目录step2中依次执行命令
#cmake.
默认当前目录,生产makefile
#make
最后编译程序
makefile文件的含义
Makefile是一种配置文件,Makefile一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
makefile中的$(CXX)是什么
makefileCXX一般代表C++编译器,$(CXX)是表示值。一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。
unix高级环境编程makefile怎么使用
makefile只是一个文本文件,make这个工具会根据makefile的指令来执行动作。所以如果你在unix上和linux上用的是相同的make工具,比如都用的是GNUmake,那么就没有区别。另外,各种版本的make在大的功能上是没有区别的,可能在某些细节或者小功能上有所不同,不过一般来说,makefile都是通用的。
文章分享结束,makefile命令和makefile命令在同一行的答案你都知道了吗?欢迎再次光临本站哦!