CMake 生成makefile 步骤

1、首先创建一个目录下的makefile

//main.cpp
#include<iostream>
using namespace std;
int main()
{
   cout<<"Hello word!"<<endl;
   return 0;
}

在main文件所在的目录创建CMakeLists.txt

//CMakeLists.txt
PROJECT(main)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
AUX_SOURCE_DIRECTORY(. DIR_SRCS)
ADD_EXECUTABLE(main ${DIR_SRCS})

PROJECT(main) 代表项目的名称是main

CMAKE_MINIMUM_REQUIRED(VERSION 2.8)  代表CMake的最低版本是2.8

AUX_SOURCE_DIRECTORY(. DIR_SRCS) 将当前目录的源文件名赋值给DIR_SRCS

ADD_EXECUTABLE(main ${DIR_SRCS}) 将 变量${DIR_SRCS}中的文件编译成执行文件mian

执行 cmake CMakeLists.txt 会生成makefile文件。  之后执行make即可

2、首先多个目录下的makefile

上图为层级不同目录的层级关系

src目录下生成lib库文件,放在src目录下, main需要调用静态库

// main.cpp
#include <iostream>
#include "ModifyConfig.h"

int main()
{
    TestCmake();
    return 0;
}
// ModifyConfig.cpp
#include "ModifyConfig.h"

void TestCmake()
{
    std::cout << "hello cmake " << std::endl
}
// ModifyConfig.h
#ifndef __MODIFY_CONFIG_H__
#define __MODIFY_CONFIG_H__
#include <iostream>

void TestCmake();

#endif

以上是简单源码

然后我们在main.cpp所在目录创建CMakeLists.txt

// CMakeLists.txt
cmake_minimum_required(VERSION 2.8)

project(cmakeTest)

aux_source_directory(. DIR_SRCS)

include_directories(./include)

add_subdirectory(src)

add_executable(main ${DIR_SRCS})

target_link_libraries(main source_lib)

include_directories(./include)  设置包含目录, 这里代表包含 ./include的文件夹

add_subdirectory(src)  增加模块目录,  src文件夹就是一个新的模块, 文件夹内也要有对应的CMakeLists.txt文件

target_link_libraries(main source_lib)  指明可执行文件需要source_lib的链接库

再看src模块下的CMakeLists.txt

//CMakeLists.txt
aux_source_directory(. DIR_SOURCE_SRCS)
add_library(source_lib SHARED ${DIR_SOURCE_SRCS})

add_library(source_lib ${DIR_SOURCE_SRCS})   将变量${DIR_SOURCE_SRCS}中的文件编译成一个静态库 所在目录为当前文件夹下

可以看到source_lib对应的就是 上一次CMakeLists.txt中需要的链接库

准备工作完毕  在main.cpp所在目录执行 cmake CMakeLists.txt  会生成对应的makefile文件

生成前的目录

生成后的目录

可以看到在根目录和src目录下都生成了Makefile文件 , 其他的文件不用管。  我暂时还不知道什么用

之后在根目录下执行make即可

如果想生成动态库 则修改

add_library(source_lib ${DIR_SOURCE_SRCS})为

add_library(source_lib SHARED ${DIR_SOURCE_SRCS}) 

然后重新cmake即可

3、设置生成的库和执行文件的位置

LIBRARY_OUTPUT_PATH  设置库生成的默认路径

CMAKE_RUNTIME_OUTPUT_DIRECTORY  设置可执行文件生成的默认路径

// CMakeLists.txt
cmake_minimum_required(VERSION 2.8)

project(cmakeTest)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)

aux_source_directory(. DIR_SRCS)

include_directories(./include)

add_subdirectory(src)

add_executable(main ${DIR_SRCS})

target_link_libraries(main source_lib)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)  这一句就设置了可执行文件的生成路径为本文件夹下的bin目录

 

  • 3
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CMake 生成 Makefile 的过程分为两个步骤: 1. 编写 CMakeLists.txt 文件 CMakeLists.txt 文件是 CMake 的配置文件,用于描述工程的源文件、编译选项、链接选项等信息。你需要在 CMakeLists.txt 文件中定义工程名称、源文件、头文件路径、库文件路径等信息。 以下是一个简单的 CMakeLists.txt 文件示例: ``` cmake_minimum_required(VERSION 3.10) project(MyProject) set(CMAKE_CXX_STANDARD 11) include_directories(include) add_executable(MyProgram src/main.cpp src/func.cpp) target_link_libraries(MyProgram m) ``` 在这个 CMakeLists.txt 文件中,首先指定了 CMake 的最低版本要求。然后定义了工程名称为 MyProject,并设置了 C++ 标准为 C++11。接着指定了头文件路径为 include 目录。然后定义了 MyProgram 目标,该目标依赖于 src/main.cpp 和 src/func.cpp 两个源文件,用于生成可执行文件 MyProgram。最后指定了链接库为数学库 libm。 2. 生成 Makefile 文件 在编写好 CMakeLists.txt 文件后,你可以使用 cmake 命令来生成 Makefile 文件。在命令行中进入工程目录,执行以下命令: ``` cmake -S . -B build ``` 其中,-S 参数指定了 CMakeLists.txt 文件所在的目录,-B 参数指定了构建目录。上述命令表示将 CMakeLists.txt 文件所在的当前目录作为源目录,将 build 目录作为构建目录。 执行完上述命令后,CMake生成 Makefile 文件并保存到 build 目录中。你可以进入 build 目录,执行 make 命令来编译工程。 ``` cd build make ``` 这样,就可以使用 CMake 生成 Makefile 文件,并编译生成工程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值