日常练习
- gtest 单元测试库
本项目完全通过cmake组织的,你可以在demo/modular
下看到本项目是如何通过cmake将所有模块组织在一起的。
所有子目录都会有一个子项目名,并且和他的路径关联,例如目录practices/leetcode
会创建一个名为study_practices_leetcode
的子项目,他在cmake中的名字是study::practices::leetcode
,并且他所依赖的子项目也会以相同的规则命名。这依赖于cmake/general.cmake
会自动的创建相关的命名变量——在你调用_setup_project_env
cmake宏之后。
- g++ / clang / msvc 编译器(C++)
- Visual Studio Code (IDE)
- vcpkg 用于解决依赖
后两者不是强制的,但是我更倾向使用可以跨平台的解决方案,所以优先推荐使用。
一切美好的事物都是从克隆仓库开始的
git clone [email protected]:iXavierLiu/study.git
在使用cmake生成构建项目前,你需要配置cmake预设,通过将CMakeUserPresets.json.example
拷贝一份,并且去掉example
后缀名来获得一份示例,这个json文件的结构非常简单和清晰,默认会有一个名为osx-local
的预设作为macos上。
cd study
cp CMakeUserPresets.json.example CMakeUserPresets.json
你需要修改该预设的toolchain路径,使它指向你vcpkg对应的位置。有关CMake Prests的更多细节可以查看文档。
# 配置tool chain path
vim CMakeUserPresets.json
然后你需要根据【依赖】章节中的需要,通过vcpkg解决项目依赖,例如解决gtest项目依赖:
cd PATH_TO_VCPKG_ROOT
./vcpkg install gtest
然后使用osx-local
预设生成项目,其中osx-local
是要使用预设的名称,如果添加了其他的预设项目,请使用对应的预设名。
cmake --preset=osx-local
可使用你喜欢的IDE继续完成编辑,例如使用VS Code打开项目
cd PATH_TO_PROJECT_ROOT
code .
推荐在VSCode中安装CMake Tools
插件,可以使用IDE的UI快速地使用cmake配置项目。
在刚刚生成的out/build/osx-local
构建目录中编译整个项目,该目录是在CMakePresets.json中的default
预设中指定的。
cmake --build out/build/osx-local