首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Poco::conan找不到基础目标

Poco::conan找不到基础目标
EN

Stack Overflow用户
提问于 2021-11-12 20:56:09
回答 1查看 306关注 0票数 0

我想建立一个小图书馆,并链接到Poco基金会图书馆。我使用Conan来安装带有cmake_find_package生成器的Poco。

这是我的conanfile.py

代码语言:javascript
运行
复制
from conans import ConanFile

class ExamplePluginConan(ConanFile):
    settings = "os", "compiler", "build_type", "arch"
    requires = "poco/1.11.0"
    generators = "cmake_find_package"
    default_options = {
        "poco:shared": True, 
        "poco:enable_active_record": False,
        "poco:enable_crypto": False,
        "poco:enable_data": False,
        "poco:enable_data_mysql": False,
        "poco:enable_data_postgresql": False,
        "poco:enable_data_sqlite": False,
        "poco:enable_jwt": False,
        "poco:enable_mongodb": False,
        "poco:enable_net": False,
        "poco:enable_netssl": False,
        "poco:enable_redis": False,
        "poco:enable_zip": False,
        }

    def imports(self):
        if self.settings.build_type == "Debug":
            self.copy("*.dll", dst="bin/Debug", src="bin", root_package="poco")
        elif self.settings.build_type == "Release":
            if self.settings.os == "Windows":
                self.copy("*.dll", dst="bin/Release", src="bin", root_package="poco")
            elif self.settings.os == "Linux":
                self.copy("*.so*", dst="bin", src="lib", root_package="poco")

这是我的CMakeLists.txt

代码语言:javascript
运行
复制
cmake_minimum_required(VERSION 3.14)

if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR)
    message(FATAL_ERROR "Do not build in-source. Please remove CMakeCache.txt and the CMakeFiles/ directory. Then build out-of-source")
endif()

project("ExamplePlugin" VERSION 1.0.0 LANGUAGES CXX)

list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_BINARY_DIR})
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR})

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(GLOBAL PROPERTY USE_FOLDERS ON)

option(BUILD_SHARED_LIBS "Build shared (dynamic) libraries." ON)


add_library(ExamplePlugin)
add_library("jd::ExamplePlugin" ALIAS ExamplePlugin)

target_sources(ExamplePlugin
                    PUBLIC
                    include/ExamplePlugin/ExamplePlugin.hpp
                    PRIVATE
                    src/ExamplePlugin.cpp
)

find_package(Poco)

if(NOT TARGET Poco::Poco)
    message(FATAL_ERROR "Target  Not Found ")
endif()

target_link_libraries(ExamplePlugin PUBLIC jd::Core Poco::Foundation)

target_include_directories(ExamplePlugin PUBLIC "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>"
                            "$<INSTALL_INTERFACE:$<INSTALL_PREFIX>/${CMAKE_INSTALL_INCLUDEDIR}>"
                            PRIVATE "$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/src>"
)               

if(NOT BUILD_SHARED_LIBS)
    string(TOUPPER ExamplePlugin PROJECT_NAME_UPPER)
    set_target_properties(ExamplePlugin PROPERTIES COMPILE_FLAGS -D${PROJECT_NAME_UPPER}_STATIC)
endif()


set_target_properties(ExamplePlugin PROPERTIES SOVERSION 1 VERSION 1.0.0)
set_target_properties(ExamplePlugin PROPERTIES 
                    ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
                    LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
                    RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
set_target_properties(ExamplePlugin PROPERTIES DEBUG_POSTFIX "d")

include(GenerateExportHeader)
string(TOUPPER ExamplePlugin PROJECT_NAME_UPPER)
generate_export_header(ExamplePlugin
    EXPORT_FILE_NAME ${CMAKE_CURRENT_SOURCE_DIR}/include/ExamplePlugin/export.hpp
    EXPORT_MACRO_NAME ${PROJECT_NAME_UPPER}_EXPORT
    STATIC_DEFINE ${PROJECT_NAME_UPPER}_STATIC
)

这总是给我一个错误,即找不到目标Poco::Foundation

CMake错误在ExamplePlugin/CMakeLists.txt:20 (add_library):目标"ExamplePlugin“链接到目标"Poco::Foundation”,但没有找到目标。也许导入的目标缺少了find_package()调用,或者缺少了别名目标?

只有当我指定Poco::Poco目标时,它才能工作。但是,这将链接我的图书馆与所有的Poco图书馆(如NetUtilsJSON等)

是否有一种方法只链接到Poco::Foundation部件?

EN

回答 1

Stack Overflow用户

发布于 2022-01-06 19:43:29

在我发表这个问题的时候,这是不可能的。但是对Center中的Poco包进行了更新,现在只能针对poco::foundation这样的特定目标进行链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69948960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档