
是一个开源的C/C++ 包管理器,类似与python 的 pip,实际使用中支持conanfile.txt(方便便捷简单) 与 conanfile.py (强大自定义特殊要求)

本次介绍的是使用 conanfile.txt + Cmake + 自建编译工具实现编译与调试
首先安装conan

pip install conan==2.22.2

自定义工作路径(解决C盘压力)
bash
CONAN_HOME
CONAN_USER_HOME
这2个设置到用户变量或者系统变量(如D:/conan)可以实现自定义安装!
然后进行初始化配置(这里使用的是MingW64 --- 网上教程少且看且珍惜)
bash
conan config home
查看配置结果
conan profile detect
生成配置文件
conan profile show
查看当前配置信息
conan profile list # 获取所有的配置文件名
conan profile path default # default:配置文件名
生成默认后不需要去管了我们按照自己的环境进行改写

分别创建
bash
conan profile detect --name MingW64_Debug
conan profile detect --name MingW64_Release
假如:MingW64_Release 如下配置
bash
[settings]
os=Windows
arch=x86_64
compiler=gcc
compiler.version=14
compiler.libcxx=libstdc++11
compiler.threads=posix
compiler.exception=seh
build_type=Release
[buildenv]
PATH+=(path)D:/MingW64/bin
CC=D:/MingW64/bin/gcc.exe
CXX=D:/MingW64/bin/g++.exe
[options]
boost/*:without_stacktrace=True
[conf]
tools.build:compiler_executables={"c": "D:/MingW64/bin/gcc.exe", "cpp": "D:/MingW64/bin/g++.exe","gdb":"D:/MingW64/bin/gdb.exe"}
配置后 可以创建 如 Boost 的工程(conanfile.txt)
bash
[requires]
boost/1.89.0
[generators]
CMakeDeps
CMakeToolchain
[layout]
cmake_layout
且介所有的工程都需要写
layout
cmake_layout
然后继续写 CmakeLists.txt
bash
cmake_minimum_required(VERSION 3.15)
project(MyApp)# 设置输出文件名 不要改
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin) # 设置输出路径 不要改
set(INCLUDE "${PROJECT_SOURCE_DIR}/Include")
include_directories(${INCLUDE})
file(GLOB SRC "${PROJECT_SOURCE_DIR}/Src/*.cpp")
find_package(Boost REQUIRED NO_MODULE) # 其余的库也可以在这里添加
add_executable(${PROJECT_NAME} ${SRC} main.cpp)
target_link_libraries(${PROJECT_NAME} Boost::boost) # 对象引用
include(${CMAKE_BINARY_DIR}/generators/conan_toolchain.cmake OPTIONAL
RESULT_VARIABLE CONAN_TOOLCHAIN_LOADED)
if(NOT CONAN_TOOLCHAIN_LOADED)
message(WARNING "Conan toolchain not found! Using system defaults.")
endif()
target_compile_options(${PROJECT_NAME} PRIVATE
$<$<CONFIG:Debug>:-g -O0>
$<$<CONFIG:Release>:-O2 -DNDEBUG>
)
if(MINGW)
target_link_options(${PROJECT_NAME} PRIVATE
-static
-static-libgcc
-static-libstdc++
)
endif()
最后就是实际的main.cpp
cpp
#include <boost/version.hpp>
#include <boost/stacktrace.hpp>
#include <iostream>
#include <cstdlib> // for std::abort
#include <exception>
#include "test.h"
// 全局异常处理器:在程序崩溃时自动打印调用栈
void my_terminate_handler() {
std::cerr << "Unhandled exception detected!\n";
std::cerr << "Stack trace:\n" << boost::stacktrace::stacktrace() << std::endl;
std::abort(); // 确保退出并触发调试器(如 GDB)
}
void function_c() {
// 模拟一个错误:抛出异常或直接打印栈
std::cout << "Current stack trace:\n"
<< boost::stacktrace::stacktrace() << std::endl;
// 或者故意抛出未捕获异常来测试 terminate handler
// throw std::runtime_error("Something went wrong in function_c!");
}
void function_b() {
function_c();
}
void function_a() {
function_b();
}
int main() {
std::cout << test_add(15,77) << std::endl;
// 注册全局异常处理(可选但推荐用于调试)
std::set_terminate(my_terminate_handler);
std::cout << "Boost version: " << BOOST_LIB_VERSION << std::endl;
std::cout << "Printing call stack from main:\n";
function_a();
std::cout << "\nPress any key to continue...";
std::cin.get(); // 更安全的"暂停",避免 system("pause") 的兼容性问题
return 0;
}
使用自己的建立程序测试


然后就是调试测试 需要先 执行命令
bash
conan_build 1

然后就是Cmake配置 框图 选为 debug模式

让在main.cpp界面 按F5即可调用 出调试界面

这个项目完美解决了自己装常用包的麻烦!让C++实现python一样的使用体验,希望CoNan 也来越好最后拜托依赖Cmake,本身去与gdb,lldb进行调试接口设计!
如果F5失败参考:Target Debugging and Launching --- CMake Tools 1.4.0 documentation
也就是 .vscode --> launch.json
bash
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
// Resolved by CMake Tools:
"program": "${command:cmake.launchTargetPath}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [
{
// add the directory where our target was built to the PATHs
// it gets resolved by CMake Tools:
"name": "PATH",
"value": "$PATH:${command:cmake.launchTargetDirectory}"
},
{
"name": "OTHER_VALUE",
"value": "Something something"
}
],
"externalConsole": true,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
文件下载:密码:7n6d