×

makefile cmake

makefile cmake(如何使用CMAKE生成makefile文件)

admin admin 发表于2023-11-08 21:54:38 浏览44 评论0

抢沙发发表评论

本文目录

如何使用CMAKE生成makefile文件

  CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 linux 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。  在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:  编写 CmakeLists.txt。  执行命令 “cmake PATH” 或者 “ccmake PATH” 生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。  使用 make 命令进行编译  工程实例:  一. 编写各层CMakeLists.txt  主目录的主程序main.cpp  #include “hello.h“  extern Hello hello;  int main()  {  hello.Print();  return 0;  }  主目录的CMakeLists.txt  # to the root binary directory of the project as ${MAIN_BINARY_DIR}.  project (MAIN)  #version support  cmake_minimum_required(VERSION 2.8)  # Recurse into the “Hello“ and “Demo“ subdirectories. This does not actually  # cause another cmake executable to run. The same process will walk through  # the project’s entire directory structure.  add_subdirectory (Hello)  add_subdirectory (Demo)  # Make sure the compiler can find include files from our Hello library.  include_directories (${MAIN_SOURCE_DIR}/Hello)  # Make sure the linker can find the Hello Demo library once it is built.  link_directories (${HELLO_BINARY_DIR}/Hello)  link_directories (${HELLO_BINARY_DIR}/Demo)  #define the source coedes of current directory as DIR_SRCS  AUX_SOURCE_DIRECTORY(. DIR_SRCS)  # Add executable called “MAIN“ that is built from the source files  add_executable (Main ${DIR_SRCS})  # Link the executable to the Hello Demo library.  target_link_libraries (Main Hello Demo)  定义项目名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“  Hello hello;  子目录Demo的CMakeLists.txt  # Make sure the compiler can find include files from our Hello library.  include_directories (${MAIN_SOURCE_DIR}/Hello)  #define the source coedes of current directory as DIR_DEMO_SRCS  AUX_SOURCE_DIRECTORY(. DIR_DEMO_SRCS)  # Add library called “Demo“ that is built from the source files  add_library (Demo ${DIR_DEMO_SRCS})  Demo目录下的CMakeLists主要作用是利用add_library将当前目录源码编译成Demo库,由于该库使用到hello.h文件,所以要include_directories该目录。  ---------------------------------------------------------------------------------------------------  子目录Hello的子程序hello.h  #ifndef _hello_h  #define _hello_h  class Hello  {  public:  void Print();  };  #endif  子目录Hello的子程序hello.c  #include “hello.h“  #include 《stdio.h》  void Hello::Print()  {  printf(“Hello, World!\n“);  }  子目录Hello的CMakeLists.txt  #define the source coedes of current directory as DIR_HELLO_SRCS  AUX_SOURCE_DIRECTORY(. DIR_HELLO_SRCS)  # Add library called “hello“ that is built from the source files  add_library (Hello ${DIR_HELLO_SRCS})  Hello目录下的CMakeLists主要作用是利用add_library将当前目录源码编译成Hello库。  ---------------------------------------------------------------------------------------------------  二. 执行cmake命令  至此我们完成了项目中所有 CMakeLists.txt 文件的编写,进入目录 step2 中依次执行命令  #cmake .  默认当前目录,生产makefile  #make  最后编译程序

用cmake和makefile哪个好

您好,很高兴能帮助您,Cmake是一个make工具,它可以根据makefile文件来调用你和编译器进行多个文件的编译和链接。用Cmake生成的就是使用你本地的编译器来编译生成那些文件。你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”!如你还有别的问题,可另外向我求助;答题不易,互相理解,互相帮助!

makefile和Cmakelist.txt的区别

这一章将从软件开发者的角度来描述如何实用CMake。也就是说,如果你的目标是用CMake来管理你的生成过程,请阅读这一章。 CMake的输入 COMMAND(args) 这里的 COMMAND 是命令行的名称,args是用空格分割的参数列表。典型的,对与每一个项目的目录

CMake和CCMake的区别

gcc是c语言编译器,而g++则是c++语言编译器,虽然gcc命令也可以用来编译c++语言的源码,但是它最终是要调用g++的。make工具通过你提供的一个名为makefile的文件,根据makefile的内容来决定如何编译源文件。而关于make和cmake的区别,你可以理解为make需要使用makefile,而cmake是产生makefile的工具。

如何使用automake或cmake等工具配置生成makefile文件

:您好,很高兴能帮助您, Cmake是一个make工具氦姬份肯莓厩逢询抚墨,它可以根据makefile文件来调用你和编译器进行多个文件的编译和链接。用Cmake生成的就是使用你本地的编译器来编译生成那些文件。 你的采纳是我前进的动力,还有不懂的地方,请你继续“追问”!

makefile文件能用cmake吗

make命令是运行的所在目录下的Makefile文件, 如果Makefile 里有check的话, 会执行测试,也就是检查下编译出来的东西能不能用。

CMake和Make之间的区别

gcc是C语言编译器,而g++则是C++语言编译器,虽然gcc命令也可以用来编译C++语言的源码,但是它最终是要调用g++的。make工具通过你提供的一个名为Makefile的文件,根据Makefile的内容来决定如何编译源文件。而关于make和cmake的区别,你可以理解为make需要使用Makefile,而cmake是产生Makefile的工具。

make makefile cmake qmake都是什么,有什么区别

1. make 是用来执行Makefile的。2. Makefile是类unix环境下(比如Linux)的类似于批处理的“脚本“文件。其基本语法是: 目标+依赖+命令,只有在目标文件不存在,或目标比依赖的文件更旧,命令才会被执行。由此可见,Makefile和make可适用于任意工作,不限于编程。比如,可以用来管理latex。3. Makefile+make可理解为类unix环境下的项目管理工具,但它太基础了,抽象程度不高,而且在windows下不太友好(针对visual studio用户),于是就有了跨平台项目管理工具cmake4. cmake是跨平台项目管理工具,它用更抽象的语法来组织项目。虽然,仍然是目标,依赖之类的,但更为抽象和友好,比如可用math表示数学库,而不需要再具体指定到底是math.dll还是libmath.so,在windows下它会支持生成visual studio的工程,在linux下它会生成Makefile,甚至它还能生成eclipse工程文件。也就是说,从同一个抽象规则出发,它为各个编译器定制工程文件。5. cmake是抽象层次更高的项目管理工具,cmake命令执行的CMakeLists.txt文件6. qmake是Qt专用的项目管理工具,对应的工程文件是*.pro,在Linux下面它也会生成Makefile,当然,在命令行下才会需要手动执行qmake,完全可以在qtcreator这个专用的IDE下面打开*.pro文件,使用qmake命令的繁琐细节不用管了。总结一下,make用来执行Makefile,cmake用来执行CMakeLists.txt,qmake用来处理*.pro工程文件。Makefile的抽象层次最低,cmake和qmake在Linux等环境下最后还是会生成一个Makefile。cmake和qmake支持跨平台,cmake的做法是生成指定编译器的工程文件,而qmake完全自成体系。

Cmake是什么有什么用在WINDOWS下如何用

CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。 通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者ctest)、生成当前平台的安装包(make package)、生成源码包(make package_source)、产生Dashboard显示数据并上传等高级功能,只要在CMakeLists.txt中简单配置,就可以完成很多复杂的功能,包括写测试用例。 如果有嵌套目录,子目录下可以有自己的CMakeLists.txt。 总之,CMake是一个非常强大的编译自动配置工具,支持各种平台,KDE也是用它编译的,感兴趣的可以试用一下。 准备活动: (1)安装cmake。 下载地址:中国至美.cmake.org/cmake/resources/software.html 根据自己的需要下载相应的包即可,Windows下可以下载zip压缩的绿色版本,还可以下载源代码。 Windows下CMake的使用 (2)运行cmake的方法。(GUI、命令行) 中国至美.cmake.org/cmake/help/runningcmake.html CMake使用步骤: 运行GUI的cmake界面: cmake-2.8.1-win32-x86\bin\cmake-gui.exe Windows下CMake的使用 执行Configure: 运行之后,生成了如下文件: Windows下CMake的使用 生成Makefile: 执行Generate之后生成如下文件: Windows下CMake的使用 运行make进行编译: Windows下CMake的使用 编译完成后,在build目录生成Tutorial.exe,运行Tutorial.exe 25就可以看到运行结果: Windows下CMake的使用 运行make install安装程序: Windows下CMake的使用 运行make test进行测试: Windows下CMake的使用 通过cmake tutorial学习CMake配置方法 中国至美.cmake.org/cmake/help/cmake_tutorial.html 可以在源代码的Tests/Turorial目录中找到这个手册对应的代码。 Windows下CMake的使用 1、Step1。 (如果不知道如何使用cmake,以及如何使用编译产生的Turorial.exe,可先看下前面“CMake使用步骤”的说明,它以Step4为例详细介绍了使用过程,Step1的配置可能不够完全,比如无法运行make install,无法运行make test,但可以参考。) 简单的程序编译。 (1)运行GUI的cmake,指定要编译的源代码路径和二进制文件路径(会自动创建)。 Windows下CMake的使用 (2)点击Configure,配置成功后,再点击Generate。 配置需要选择合适的编译器,虽然我安装了VC2008,但没有配置成功;选择Unix Makefiles,配置成功,它自动找到了DevC++下的gcc.exe等编译器。 Windows下CMake的使用 (3)在build3目录执行make,就能够编译生成Turorial.exe了。 D:\Projects\Lab\testngpp\cmake-2.8.1\Tests\Tutorial\Step1\build3》make Linking CXX executable Tutorial.exe Built target Tutorial 可以运行一下Turorial.exe: D:\Projects\Lab\testngpp\cmake-2.8.1\Tests\Tutorial\Step1\build3》Tutorial.exe Tutorial.exe Version 1.0 Usage: Tutorial.exe number D:\Projects\Lab\testngpp\cmake-2.8.1\Tests\Tutorial\Step1\build3》Tutorial.exe 4 The square root of 4 is 2 2、Step2 把子目录编译为库,并且链接到最终的可执行文件。 include_directories (“${PROJECT_SOURCE_DIR}/MathFunctions“) add_subdirectory (MathFunctions) # 使得子目录MathFunctions也能被编译 # add the executable add_executable (Tutorial tutorial.cxx) target_link_libraries (Tutorial MathFunctions) 产生makefile: 在GUI上点击Configure,之后Generate还是灰色,再次点击Configure,Generate就可以点击了。 编译