conan/README.md
This directory contains Conan package recipes for TDinternal dependencies.
Fast LZMA2 compression library
fast-lzma2/Key Features:
Usage:
find_package(fast-lzma2 REQUIRED CONFIG)
target_link_libraries(your_target fast-lzma2::fast-lzma2)
C++ stub/mock library for unit testing
cppstub/Key Features:
Usage:
find_package(cppstub REQUIRED CONFIG)
target_link_libraries(your_target cppstub::cppstub)
| Feature | fast-lzma2 | cppstub |
|---|---|---|
| Type | Compiled Library | Header-Only |
| Build System | Makefile | None |
| Platform Specific | Yes (binary) | Yes (headers) |
| Link Required | Yes | No |
| Use Case | Compression | Testing/Mocking |
| Package Size | Medium | Small |
Install both packages:
# Install fast-lzma2
cd fast-lzma2
conan create . --build=missing
# Install cppstub
cd ../cppstub
conan create . --build=missing
Verify installation:
conan list "fast-lzma2/*"
conan list "cppstub/*"
To use these packages in the TDinternal project:
Update cmake/conan.cmake to include proper macros:
# For fast-lzma2
macro(DEP_ext_fast_lzma2 tgt)
if(TARGET fast-lzma2::fast-lzma2)
target_link_libraries(${tgt} PUBLIC fast-lzma2::fast-lzma2)
endif()
endmacro()
# For cppstub
macro(DEP_ext_cppstub tgt)
if(TARGET cppstub::cppstub)
target_link_libraries(${tgt} PUBLIC cppstub::cppstub)
endif()
endmacro()
In your main conanfile.py or conanfile.txt:
def requirements(self):
# Production dependency
self.requires("fast-lzma2/1.0.1")
# Test dependency
if self.options.get_safe("build_tests"):
self.requires("cppstub/1.0.0")
// For compression
#include "fast-lzma2.h"
// For testing
#include <stub.h>
#include <addr_any.h>
conan/
├── README.md # This file
├── fast-lzma2/ # Fast LZMA2 package
│ ├── conanfile.py
│ ├── README.md
│ ├── USAGE.md
│ ├── fast-lzma2/ # Source files
│ └── test_package/
└── cppstub/ # C++ Stub package
├── conanfile.py
├── README.md
├── SUMMARY.md
├── cppstub/ # Source files
└── test_package/
cd fast-lzma2
conan create . --build=missing
# Build shared library version
conan create . --build=missing -o fast-lzma2/*:shared=True
# Build Debug version
conan create . --build=missing -s build_type=Debug
cd cppstub
conan create . --build=missing
# Note: cppstub is header-only, so build options don't affect it
Both packages include test_package directories that verify:
Run tests:
# Automatically run during conan create
conan create . --build=missing
These packages replace the following external dependencies in cmake/external.cmake:
ext_fast_lzma2 → Now using Conan package fast-lzma2/1.0.1ext_cppstub → Now using Conan package cppstub/1.0.0Other dependencies that could be migrated to Conan:
If Conan can't find the package:
# Check if package is installed
conan list "package-name/*"
# If not, create it
cd package-name
conan create . --build=missing
If you encounter build errors:
# Clean and rebuild
conan remove "package-name/*" -c
cd package-name
conan create . --build=missing
Make sure your CMakeLists.txt includes:
find_package(package-name REQUIRED CONFIG)
target_link_libraries(your_target package-name::package-name)
Each package maintains its original license:
To add a new Conan package:
mkdir conan/package-nameconanfile.py with package recipetest_package/ for verificationconan create . --build=missing