CMake与MSVC工程化实践
CMake基础
cmake无疑是最流行的c++跨平台构建工具之一,关于cmake入门指南这里不再赘述,官方文档是最好的参考,这里通过一个例子简述构建一个工程常用的函数和变量。
假设此项目有三个文件hello.h、hello.cpp、main.cpp,hello.h和hello.cpp导出一个void hello();
的函数,在main.cpp中使用,CMakeList.txt如下:
# 指明当前CMake的版本不能小于指定版本
cmake_minimum_required (VERSION 3.4)
# 工程名称,如果生成msvc工程,这个同样是解决方案名称
project(MyProject)
# 将hello.h、hello.cpp保存到${HELLO_SRC}变量中,作为文件列表
file(GLOB HELLO_SRC
hello.h
hello.cpp
)
file(GLOB MAIN_SRC
main.cpp
)
# ${HELLO_SRC}生成为一个共享库,在windows系统自然是dll模块
add_library(hello SHARED ${HELLO_SRC})
# ${MAIN_SRC}生成一个可执行程序main.exe/main.out
add_executable(main ${MAIN_SRC})
# 生产目标main的时候指定链接器链接hello模块
target_link_libraries(main hello)
这样便完成了一个非常简单的CMake工程,同时它也包含了我们工程最关注的一些东西&