twn39 / code

:memo: 代码笔记,通过 issue 的方式记录日常遇到的问题和学习笔记
13 stars 1 forks source link

Conan 编译 Boost 管理 C/C++ 项目 #415

Open twn39 opened 1 year ago

twn39 commented 1 year ago

Conan 是 C/C++ 依赖包管理工具,主要基于 Cmake, 跨平台兼容性好。

安装 Conan

pip install conan

搜索包:

conan search boost --remote=conancenter

项目管理

在项目目录新建文件:conanfile.txt

 [requires]
 boost/1.80.0
 bzip2/1.0.8
 zlib/1.2.13

 [generators]
 cmake

在项目目录下新建目录并安装依赖:

编译 debug 版本

conan install . -s build_type=Debug --install-folder=cmake-build-debug --build=missing

编译 release 版本

conan install . -s build_type=Release --install-folder=cmake-build-release --build=missing

--build=missing 参数设置如果依赖包没有提供二进制包,直接下载源码编译,推荐加上,因为 conancenter 不会给每个平台每个版本都提供二进制编译好的文件。

编译

测试文件:main.cpp

#include <boost/log/trivial.hpp>

int main(int, char*[])
{
    BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
    BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
    BOOST_LOG_TRIVIAL(info) << "An informational severity message";
    BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
    BOOST_LOG_TRIVIAL(error) << "An error severity message";
    BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";

    return 0;
}

添加 CMakeLists.txt 文件:

cmake_minimum_required(VERSION 3.24)
project(demoapp CXX)

if(EXISTS ${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
    include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
    conan_basic_setup()
else()
    message(WARNING "The file conanbuildinfo.cmake doesn't exist, you have to run conan install first")
endif()

set(CMAKE_CXX_STANDARD 11)
add_executable(main main.cpp)
target_link_libraries(main ${CONAN_LIBS})

生成 cmake 编译配置, 切换到 cmake-build-debug

cmake .. -G "Visual Studio 17"
cmake --build . --config Debug

注:设置代理:

# linux/osx
$ export HTTP_PROXY="http://10.10.1.10:3128"
$ export HTTPS_PROXY="http://10.10.1.10:1080"

# with user/password
$ export HTTP_PROXY="http://user:pass@10.10.1.10:3128/"
$ export HTTPS_PROXY="http://user:pass@10.10.1.10:3128/"

# windows (note, no quotes here)
$ set HTTP_PROXY=http://10.10.1.10:3128
$ set HTTPS_PROXY=http://10.10.1.10:1080

注:Clion 自带 MinGW 版本的 GCC,Cmake 跨平台性很好,所以在 Windows 下推荐使用 Visual studio build tools,可单独安装,不需要完整安装 VS ide。 在 Clion 中需要在 Toolchains 中配置 VS build tools 路径并置顶成默认编译器。