柯南在conanfile.py中使用外部库

时间:2019-05-26 11:20:41

标签: c++ conan

我正在尝试将柯南的基本example转换为使用conanfile.py而不是conanfile.txt。当我尝试运行conan create命令时,出现以下错误:

build conan create . test/demo
CMake Error: The source directory "/Users/jz/.conan/data/md5/Head/BT/Dev/build/d803d7fe7c0f21a712085db02ec50fa5555b30b5/md5" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
md5/Head@BT/Dev: 
md5/Head@BT/Dev: ERROR: Package 'd803d7fe7c0f21a712085db02ec50fa5555b30b5' build failed
md5/Head@BT/Dev: WARN: Build folder /Users/jz/.conan/data/md5/Head/BT/Dev/build/d803d7fe7c0f21a712085db02ec50fa5555b30b5
ERROR: md5/Head@test/demo: Error in build() method, line 16
        cmake.configure(source_folder="md5")
        ConanException: Error 256 while executing cd '/Users/jz/.conan/data/md5/Head/test/demo/build/d803d7fe7c0f21a712085db02ec50fa5555b30b5' && cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Release" -DCONAN_EXPORTED="1" -DCONAN_IN_LOCAL_CACHE="ON" -DCONAN_COMPILER="apple-clang" -DCONAN_COMPILER_VERSION="10.0" -DCONAN_CXX_FLAGS="-m64" -DCONAN_SHARED_LINKER_FLAGS="-m64" -DCONAN_C_FLAGS="-m64" -DCONAN_LIBCXX="libc++" -DBUILD_SHARED_LIBS="OFF" -DCMAKE_INSTALL_PREFIX="/Users/jz/.conan/data/md5/Head/test/demo/package/d803d7fe7c0f21a712085db02ec50fa5555b30b5" -DCMAKE_INSTALL_BINDIR="bin" -DCMAKE_INSTALL_SBINDIR="bin" -DCMAKE_INSTALL_LIBEXECDIR="bin" -DCMAKE_INSTALL_LIBDIR="lib" -DCMAKE_INSTALL_INCLUDEDIR="include" -DCMAKE_INSTALL_OLDINCLUDEDIR="include" -DCMAKE_INSTALL_DATAROOTDIR="share" -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY="ON" -Wno-dev '/Users/jz/.conan/data/md5/Head/test/demo/build/d803d7fe7c0f21a712085db02ec50fa5555b30b5/md5'

我的conanfile.py如下所示

from conans import ConanFile, CMake, tools


class Md5Conan(ConanFile):
    name = "md5"
    version = "Head"
    requires = "Poco/1.9.0@pocoproject/stable" # comma-separated list of requirements
    settings = "os", "compiler", "build_type", "arch"
    options = {"shared": [True, False]}
    default_options = "shared=False"
    generators = "cmake"
    exports_sources = "md5/*"

    def build(self):
        cmake = CMake(self)
        cmake.configure(source_folder="md5")
        cmake.build()


    def package(self):
        self.copy("*.h", dst="include", src="md5")
        self.copy("*.lib", dst="lib", keep_path=False)
        self.copy("*.dll", dst="bin", keep_path=False)
        self.copy("*.so", dst="lib", keep_path=False)
        self.copy("*.dylib", dst="lib", keep_path=False)
        self.copy("*.a", dst="lib", keep_path=False)

    def package_info(self):
        self.cpp_info.libs = ["md5"]

我的cmake是这样的:

cmake_minimum_required(VERSION 3.14)
project(md5)

include(build/conanbuildinfo.cmake)
conan_basic_setup()
set(CMAKE_CXX_STANDARD 14)


add_executable(md5 md5.cpp)
target_link_libraries( md5 ${CONAN_LIBS} )

确实,当我尝试cd到未创建/ md5文件夹的路径并且IO认为问题出在exports_sources上时,我尝试使用本地源代码而不是git。我可以在没有柯南的情况下使用cmake成功运行代码。

0 个答案:

没有答案
相关问题