cmake tutorial -- 入门

姬选
2023-12-01

参考链接:

快速入门

cmake vs visual studio

参照visual studio来记住cmake的相关命令

VISUAL STUDIOCMAKE COMMAND
Solution file (.sln)project
Project file (.vcproj)target name in the command add_executable or add_library
executable (.exe)add_executable
static library (.lib)add_library
dynamic library (.dll)add_library(SHARED)
Source Folderssource_group
Project Foldersset_property(TARGET PROPERTY FOLDER)
Properties->General->Output Directoryset_target_properties(PROPERTIES RUNTIME_OUTPUT_DIRECTORY)
Properties->C/C+±>Preprocessor->Preprocessor Definitionsadd_definitions
Properties->C/C+±>General->Additional Include Directoriesinclude_directories
Properties->Linker->General->Additional Library Directorieslink_directories
Properties->Linker->Input->Additional Dependenciestarget_link_libraries

快速入门

  • 环境: win10 visual studio code wsl linux
  • 创建main.cpp, 创建简单的 c++ hello world
#include <iostream>

int main(int argc,char* args[])
{
    std::cout<<"Hello World!"<<std::endl;
    return 0;
}
  • 在同级源文件夹下面创建CMakeLists.txt
# cmake 最低支持的版本
cmake_minimum_required(VERSION 3.0)

# 工程名称
project (cmake_tutorial)

# 添加源文件的文件夹 到DIR_SRCS的变量里面
aux_source_directory(. DIR_SRCS)

# 生成运行文件 使用DIR_SRCS里面为源文件
add_executable(main ${DIR_SRCS})
  • 在vs code的terminal中使用wsl(linux子系统),输入cmake .,然后再输入make,就能看见输出的main执行文件
  • 输入./main,看到Hello World!输出成功,即成功跑通cmake的第一个示例程序。在windows下使用类似,make命令需要更换成msbuild或者直接使用visual studio编译。

cmake 子目录

  • 创建TestDir子目录,创建Test.h Test.cpp文件
\\Test.h
class Test
{
    public:
        int add(int a,int b);
};
\\Test.cpp
#include "Test.h"

int Test::add(int a,int b)
{
    return a+b;
}
  • TestDir中创建CMakeLists.txt文件,在cmake工程中,每一级文件夹都建议创建一个CMakeLists.txt文件
#生成静态库
add_library(Test Test.cpp)
  • 回到main.cpp同级目录,修改CMakeLists.txt文件
# cmake 最低支持的版本
cmake_minimum_required(VERSION 3.0)

# 工程名称
project (cmake_tutorial)

# 添加源文件的文件夹 到DIR_SRCS的变量里面
aux_source_directory(. DIR_SRCS)

# 添加子目录
add_subdirectory(TestDir)

# 生成运行文件 使用DIR_SRCS里面为源文件
add_executable(main ${DIR_SRCS})

# 添加Test静态库
target_link_libraries(main Test)
  • 修改main.cpp文件
#include <iostream>
#include "TestDir/Test.h"

int main(int argc,char* args[])
{
    Test* test=new Test();
    int result=test->add(100,102);
    std::cout<<"Hello World!"<<"Test add Result:"<< result <<std::endl;
    return 0;
}
  • 如上面生成测试,成功输出:Hello World!Test add Result:202。这样在不使用visual studio的环境下,也能成功实现了一个自动管理的构建系统,并且支持跨平台。
 类似资料: