参照visual studio来记住cmake的相关命令
VISUAL STUDIO | CMAKE 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 Folders | source_group |
Project Folders | set_property(TARGET PROPERTY FOLDER) |
Properties->General->Output Directory | set_target_properties(PROPERTIES RUNTIME_OUTPUT_DIRECTORY) |
Properties->C/C+±>Preprocessor->Preprocessor Definitions | add_definitions |
Properties->C/C+±>General->Additional Include Directories | include_directories |
Properties->Linker->General->Additional Library Directories | link_directories |
Properties->Linker->Input->Additional Dependencies | target_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})
cmake .
,然后再输入make
,就能看见输出的main
执行文件./main
,看到Hello World!
输出成功,即成功跑通cmake的第一个示例程序。在windows下使用类似,make
命令需要更换成msbuild
或者直接使用visual studio
编译。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
的环境下,也能成功实现了一个自动管理的构建系统,并且支持跨平台。