相关链接:

video:

makefile从入门到项目编译实战

blog:

Ubuntu 下cmake编译C程序简单流程

使用cmake构建C/C++项目和动态库

Linux下使用CMake编译C++

[CMake简介与在Linux环境下简单使用CMake的示例]

CMake进行C/C++开发(linux下)

在开发人员命令提示下,输入 cl /EHsc hello.cpp 来编译程序

1
cl main.cpp

cl编译汇编代码

1
cl /Fa main.cpp

Visual Stdio 中的 C/C++ 编译器都是同一个,叫做 CL。下面表格列出了一些基本的命令行选项。

CL gcc 说明
/E -E 输出预处理结果
/Fa -S 输出汇编文件
/Za -ansi 禁止语言扩展,这两个还不是等价的
/Dname -Dname 定义一个宏,相对于在代码中添加了 #define name
/Dname=value -Dname=value 定义一个宏,相对于在代码中添加了 #define name value
/Wall -Wall 将所有的警告信息全开。
/Od -O0 禁止优化
/O1 -Os 以最节省空间为目标优化
/O2 -O2 以允许速度最快为目标优化
/Idirecotry -Idirecotry 指定头文件搜索路径
/c -c 生成目标文件 .obj, 不链接
/libpath:direcotry -Ldirecotry 指定库文件搜索路径(MSVC的/libpath属于链接选项,第一个链接选项之前要指定/link选项,用来告诉编译器驱动,后续选项传给链接器使用)
/GR,/GR- -frtti,-fno-rtti 开启或关闭RTTI
/link -Wl 链接指定的模块或给链接器传递参数
/LD -shared 编译产生DLL文件
/LDd 编译产生DLL文件(调试版)
/MD 与动态多线程版本运行库MSVCRT.LIB链接
/MDd 与调试版动态多线程版本运行库MSVCRTD.LIB链接
/MT 与静态多线程版本运行库LIBCMT.LIB链接
/MTd 与调试版静态多线程版本运行库LIBCMTD.LIB链接

除了这些,还有不少的命令行选项,不过一般用途来说,这些就够用了

https://learn.microsoft.com/zh-cn/cpp/build/reference/running-nmake?view=msvc-170)

一些链接

CMake 保姆级教程(上)

使用cmake生成nmake配置文件

[使用nmake编译](

cmake设置静态部署

1
set(CMAKE_EXE_LINKER_FLAGS -static)

cmake设置windows程序管理员权限

1
2
3
#UAC 权限
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS
"/MANIFESTUAC:\"level='requireAdministrator' uiAccess='false'\"")

cmake设置windows程序静态编译mtd

1
2
# 配置静态编译
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded")

windows下编译x64_Release版本

1
2
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_SIZEOF_VOID_P=8 ..
make -j8

或者

1
2
cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_SIZEOF_VOID_P=8 ..
cmake --build . -j8

使用make install在linux中安装后卸载方法

在build文件夹中查看有没有install_manifest.txt

1
sudo xargs rm < install_manifest.txt

添加源文件目录

1
2
3
4
5
6
7
8
include_directories(
source/CppArray
source/CppDeque
source/CppFoward_list
source/CppList
source/CppSet
source/CppString
source/CppVector)

添加目录下的所有源文件

1
2
3
# 添加可执行文件
file(GLOB_RECURSE SOURCE_FILES "source/*.cpp")
add_executable(stl ${SOURCE_FILES})

添加链接库目录

1
2
3
4
5
6
7
8
9
10
# 链接库文件
target_link_libraries(stl
CppArray
CppDeque
CppFoward_list
CppList
CppSet
CppString
CppVector
)

设置输出目录

1
2
# 设置输出目录为 bin
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

设置CPP版本

1
2
3
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)

设置C语言与C++

1
project(STL LANGUAGES CXX C)

添加src目录

1
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src)