# try-cmake **Repository Path**: liigo/try-cmake ## Basic Information - **Project Name**: try-cmake - **Description**: No description available - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-03-19 - **Last Updated**: 2023-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 试用CMake成功了 主要有两点:接口库的使用(interface library);FetchContent下载外部Git仓库。 接口库深受[Pico SDK](https://datasheets.raspberrypi.com/pico/raspberry-pi-pico-c-sdk.pdf)推崇,我也来尝试一下。 编译方法: ```shell mkdir build && cd build cmake .. make ``` 目前还没有解决的问题是:FetchContent下载仓库时提示输入Gitee用户名和密码。 - 主程序 CMakeLists.txt: ```cmake cmake_minimum_required(VERSION 3.15) project(myproject C) add_executable(myexe) target_sources(myexe PRIVATE main.c) target_compile_features(myexe PRIVATE c_std_11) ``` - 接口库 CMakeLists.txt: 接口库可位于本地子目录内,外部Git仓库内,或其他地方。 接口库有自己的源文件和头文件(目录)。关键词是`INTERFACE`。 ```cmake add_library(mymod1 INTERFACE) target_sources(mymod1 INTERFACE mod1.c) target_include_directories(mymod1 INTERFACE include) ``` - 指定依赖项,主程序依赖本地子目录内接口库 修改主程序CMakeLists.txt: ``` add_subdirectory(mymod1) target_link_libraries(myexe PRIVATE mymod1) ``` 注意这里使用`PRIVATE`(或`PUBLIC`)而不能是`INTERFACE`。 - 指定依赖项,主程序依赖外部Git仓库内接口库 修改主程序CMakeLists.txt: ```cmake include(FetchContent) FetchContent_Declare(mymod2 GIT_REPOSITORY https://gitee.com/liigo/mymod2 GIT_TAG master ) FetchContent_MakeAvailable(mymod2) target_link_libraries(myexe PRIVATE mymod2) ``` 注意这里使用`PRIVATE`(或`PUBLIC`)而不能是`INTERFACE`。