zoukankan      html  css  js  c++  java
  • conan环境安装

    环境

    ubuntu:bionic的docker image

    docker run -it ubuntu:bionic
    

    预装工具

    apt-get install cmake
    

    安装conan

    # pip3 install conan
    Collecting conan
    # conan -v
    Conan version 1.33.0
    

    使用conan

    官方文档:https://docs.conan.io/en/latest/getting_started.html

    搜索包

    # conan search poco --remote=conan-center
    WARN: Remotes registry file missing, creating default one in /root/.conan/remotes.json
    Existing package recipes:
    poco/1.8.1          <<< 已有的版本
    poco/1.9.3
    poco/1.9.4
    poco/1.10.0
    poco/1.10.1
    

    导入包

    # conan inspect poco/1.9.4
    poco/1.9.4: Not found in local cache, looking in remotes...
    poco/1.9.4: Trying with 'conan-center'...
    Downloading conanmanifest.txt completed [0.59k]                         
    Downloading conanfile.py completed [12.59k]                            
    Downloading conan_export.tgz completed [0.30k]              
    Decompressing conan_export.tgz completed [0.00k]       
    poco/1.9.4: Downloaded recipe revision 0
    name: poco
    version: 1.9.4
    url: https://github.com/conan-io/conan-center-index
    homepage: https://pocoproject.org
    license: BSL-1.0
    

    编译

    # conan profile new default --detect
    Found gcc 7
    Found clang 6.0
    gcc>=5, using the major as version
    
    ************************* WARNING: GCC OLD ABI COMPATIBILITY ***********************
     
    Conan detected a GCC version > 5 but has adjusted the 'compiler.libcxx' setting to
    'libstdc++' for backwards compatibility.
    Your compiler is likely using the new CXX11 ABI by default (libstdc++11).
    
    If you want Conan to use the new ABI for the default profile, run:
    
        $ conan profile update settings.compiler.libcxx=libstdc++11 default
    
    Or edit '/root/.conan/profiles/default' and set compiler.libcxx=libstdc++11
    
    ************************************************************************************
    
    # conan profile update settings.compiler.libcxx=libstdc++11 default
    

    准备三个文件放在同一个目录如:conan

    conan$ ls
    CMakeLists.txt  conanfile.txt md5.cpp
    
    文件内容:
    
    conan$ cat conanfile.txt 
    [requires]
     poco/1.9.4
    
     [generators]
     cmake
     
    conan$ cat md5.cpp 
    #include "Poco/MD5Engine.h"
    #include "Poco/DigestStream.h"
    
    #include <iostream>
    
    int main(int argc, char** argv){
        Poco::MD5Engine md5;
        Poco::DigestOutputStream ds(md5);
        ds << "abcdefghijklmnopqrstuvwxyz";
        ds.close();
        std::cout << Poco::DigestEngine::digestToHex(md5.digest()) << std::endl;
        return 0;
    }
    
    conan$ cat CMakeLists.txt 
    cmake_minimum_required(VERSION 2.8.12)
     project(MD5Encrypter)
    
     add_definitions("-std=c++11")
    
     include(${CMAKE_BINARY_DIR}/conanbuildinfo.cmake)
     conan_basic_setup()
    
     add_executable(md5 md5.cpp)
     target_link_libraries(md5 ${CONAN_LIBS})
    

    conan编译

    conan# mkdir build && cd build
    build# conan install ..
    Configuration:
    [settings]
    arch=x86_64
    arch_build=x86_64
    build_type=Release
    compiler=gcc
    compiler.libcxx=libstdc++11
    compiler.version=7
    os=Linux
    os_build=Linux
    conanfile.txt: Generated conaninfo.txt
    conanfile.txt: Generated graphinfo
    
    build# cmake .. -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
    -- The C compiler identification is GNU 7.5.0
    -- The CXX compiler identification is GNU 7.5.0
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /root/build
    
    build# cmake --build .
    Scanning dependencies of target md5
    [ 50%] Building CXX object CMakeFiles/md5.dir/md5.cpp.o
    [100%] Linking CXX executable bin/md5
    [100%] Built target md5
    
    build# ls
    CMakeCache.txt  Makefile  cmake_install.cmake  conanbuildinfo.cmake  conaninfo.txt
    CMakeFiles      bin       conan.lock           conanbuildinfo.txt    graph_info.json
    
    build# ./bin/md5
    c3fcd3d76192e4007dfb496cca67e13b
    
    

    环境完成!

    打包项目

    官网打包教程:https://docs.conan.io/en/latest/creating_packages/getting_started.html

    下面要解决的问题是conanfile.txt中的conan包是怎么生成的。按照官网的打包步骤走了一遍,把源码打包成一个conan包。假设我们要将一个hello的源码打包成一个conan包

    准备源码

    # mkdir mypkg && cd mypkg
    //这里会从github上下载hello的程序
    /mypkg# conan new hello/0.1 -t  
    

    编译成conan包

    方法1:

    /mypkg# conan create . demo/testing
    [100%] Built target example
    hello/0.1@demo/testing (test package): Running test()
    Hello World Release!         <<< 执行hello程序
    

    方法2:

    上面的编译步骤等价于

    /mypkg# conan export . demo/testing
    /mypkg# conan install hello/0.1@demo/testing --build=hello
    # package is created now, use test to test it
    /mypkg# conan test test_package hello/0.1@demo/testing
    hello/0.1@demo/testing (test package): Running test()
    Hello World Release!         <<< 执行hello程序
    

    查看生成的包

    # conan search hello 
    Existing package recipes:
    
    hello/0.1@demo/testing
    

    说明已经将hello的程序源码打包成了conan包。

  • 相关阅读:
    mybatis调用oracle存储过程
    java heap space
    汉字转拼音
    Go调用cpp类方式一
    ETCD节点故障恢复
    goroutine 加 channel 代替递归调用,突破递归调用的层级限制
    vscode debug golang
    mysql分组和去重同时使用
    github、gitlab 管理多个ssh key
    Qt连接MySQL
  • 原文地址:https://www.cnblogs.com/liqinglucky/p/14320172.html
Copyright © 2011-2022 走看看