- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发 Vulkan API 的渲染器。我在使用 CMake 和 conan 包管理器正确设置项目时遇到了很大的麻烦。让我们看一下我的 conanfile.py 的依赖设置:
from conans import ConanFile, CMake
class InexorConan(ConanFile):
settings = (
"os",
"compiler",
"build_type",
"arch"
)
requires = (
"benchmark/1.5.0",
"glm/0.9.9.7",
"gtest/1.10.0",
"spdlog/1.5.0",
"glfw/3.3.2@bincrafters/stable",
"toml11/3.1.0",
"imgui/1.75",
"assimp/5.0.1",
"enet/1.3.14 "
)
generators = "cmake"
default_options = {
}
def imports(self):
# Copies all dll files from packages bin folder to my "bin" folder (win)
self.copy("*.dll", dst="bin", src="bin")
# Copies all dylib files from packages lib folder to my "lib" folder (macosx)
self.copy("*.dylib*", dst="lib", src="lib") # From lib to lib
# Copies all so files from packages lib folder to my "lib" folder (linux)
self.copy("*.so*", dst="lib", src="lib") # From lib to lib
def build(self):
cmake = CMake(self)
cmake.configure()
cmake.build()
所有 conan 设置都工作正常,从 CMake 输出可以看出:
遗憾的是,Vulkan API 没有 conan 设置。所以我使用 Sascha Willem 的 github 存储库的一些代码。我的 CMake 文件如下所示:
cmake_minimum_required(VERSION 3.4)
project(inexor-vulkan-renderer)
file(GLOB_RECURSE source_files
"src/*.hpp"
"src/*.cpp"
)
# Use the folder structure in source code directory as project structure in Visual Studio.
function(assign_source_group)
foreach(source_files IN ITEMS ${ARGN})
if (IS_ABSOLUTE "${source_files}")
file(RELATIVE_PATH _source_rel "${CMAKE_CURRENT_SOURCE_DIR}" "${source_files}")
else()
set(_source_rel "${source_files}")
endif()
get_filename_component(_source_path "${_source_rel}" PATH)
string(REPLACE "/" "\\" _source_path_msvc "${_source_path}")
source_group("${_source_path_msvc}" FILES "${source_files}")
endforeach()
endfunction(assign_source_group)
# Use CMake to find Vulkan SDK.
if (NOT CMAKE_VERSION VERSION_LESS 3.7.0)
message(STATUS "Using module to find Vulkan")
find_package(Vulkan)
endif()
# Dependency setup via conan.
# Download conan executer in case it does not exists.
if(NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/conan.cmake")
message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan")
file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/v0.14/conan.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/conan.cmake")
endif()
# Execute conan build instructions.
include(${CMAKE_CURRENT_BINARY_DIR}/conan.cmake)
conan_cmake_run(CONANFILE conanfile.py
BASIC_SETUP
BUILD outdated
PROFILE default
PROFILE_AUTO build_type
KEEP_RPATHS
)
# Use the folder structure in source code directory as project structure in Visual Studio.
assign_source_group(${source_files})
add_executable(inexor-vulkan-renderer src/main.cpp ${source_files})
target_link_libraries(inexor-vulkan-renderer PUBLIC ${Vulkan_LIBS} ${CONAN_LIBS})
# Use C++17!
target_compile_features(inexor-vulkan-renderer PRIVATE cxx_std_17)
IF(WIN32)
target_compile_definitions(inexor-vulkan-renderer PRIVATE VK_USE_PLATFORM_WIN32_KHR)
ENDIF()
target_include_directories(inexor-vulkan-renderer PRIVATE Vulkan::Vulkan)
target_link_libraries(inexor-vulkan-renderer Vulkan::Vulkan)
当我使用此设置生成 Visual Studio 项目文件时,我必须手动将 glfw3.lib、spdlogd.lib 和 fmtd.lib 添加到项目中。其他存储库(例如官方 Vulkan 示例)采用更传统的方法,只需将库直接粘贴到存储库文件夹中。我不想这样做,因为我想让柯南为我工作。六个月来我一直在努力解决这个问题。
尽管 conan 可以找到所需的库,但为什么 CMake 没有链接它们?
谢谢你。
最佳答案
我找到了解决方案:有一个名为 conan_target_link_libraries 的函数,必须使用它来代替 target_link_libraries。感谢您的回答。
关于cmake - 使用 CMake 和 conan 包管理器正确设置 Vulkan、glfw 和 spdlog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60422367/
我尝试创建 conan boost 包裹图书馆。 我从 https://github.com/conan-io/conan-center-index/tree/master/recipes/boost
我们可以在 conan 中使用介子构建系统。但是我找不到任何关于如何在 meson.build 中添加 conan 包作为依赖项的文档。在cmake中非常简单,我们可以简单地使用conan_cmake
我有一个使用箭头和 Parquet 的项目。我下载并构建了所需的库,然后成功构建了我的库。现在我想迁移它以使用 conan,以简化构建过程。 我面临的问题是,大多数(如果不是全部)箭头的预构建二进制文
我有一个项目,我正在尝试使用 conan 作为包管理器。 该项目使用了大量的库,其中大部分是自给自足的。但是,其中一些依赖于另一个库。 举一个具体的例子,假设我们有一个项目 P,它需要库 A 和 B。
我有一组第三方二进制文件,我正试图将其放入柯南包中。二进制文件位于构建配置的文件夹中:Linux32、Win32、Win64、Win32。 我已经能够使用以下 conanfile.py 为 Win64
我正在使用 Jetbrains CLion 2019.3、MinGW 8.1 以及 Conan C/C++ Package Manager 1.21.1< 开发一个小型 C 可执行项目.我正在刷新有关
内容: 当我遇到一些问题时,我试图在gitlab管道上构建我的项目。在AWS的管道中运行gitlab-ci.yml时,在两个测试部分中,其中一个在conan安装步骤中失败。 成功的部分: - cona
对于本地缓存中的某个包 P,如何获取包 P 的配方(conanfile.py)? 例如,我们以一个名为的 conan 包为例: zlib/1.2.11@conan/stable 我可以从 conan-
假设我有一个库作为包上传到 conan 中,它使用 OpenGL,因此与 CMakeLists.txt 中的 GL 链接。库的用户是否需要再次明确链接到 GL? conan 是否提供了一种方法来跟踪它
通常 Conan包仅包含构建工件,如 *.dll、*.lib、*.pdb、*.so、 *.a、*.dylib 文件以及给定 C 或 C++ 库的 header 。然而,有时当您调试使用库的代码时,能够
我正在考虑开始使用 Conan用于管理我的 C++ 项目的第三方依赖项的包管理器,但我找不到如何仅链接到 Conan 包中的某些库。我正在使用 CMake作为构建系统,我正在使用 Conan 多配置
我运行:conan install Boost/1.64.0@conan/stable,但它失败了。 输出: C:\temp>conan install Boost/1.64.0@conan/stab
我写我的宠物项目。起初,它是基于 cmake 的,我从控制台设置了 qt 库的路径,例如cmake -DPATH_TO_QT:STRING=/home/user/Qt/5.11.1/gcc_64/变量
我们的 Jenkins 管道将有不同的并发作业运行 conan install 和 conan export-pkg 更新本地缓存。 我们目前在/home/jenkins/conan 中为 jenki
JFrog 的 Artifactory OSS 网页使它看起来像是 OSS 的一部分 https://www.jfrog.com/open-source/#conan .我正在 Docker 容器中试
我一直在为个人项目学习柯南,但我有一个问题,通过查看文档和示例无法回答。 Conan 的“配置文件”和 CMake 之间似乎缺乏交互,很尴尬。我的意思是:有许多不同的构建参数必须手动保持同步 - 使用
我正在使用 conan 包管理器为项目安装我的依赖项。该项目只需要所有boost库的boost系统,因为我只使用asio和beast。 但是,柯南安装了 boost 的每个部分,这是不可取的。如果我通
我正在尝试使用以下 conanfile.txt 文件安装 boost: [requires] cryptopp/8.2.0@bincrafters/stable boost/1.64.0@conan/
我经常看到很多 conanfile.py 并且它们都有类似的东西 from conans import ConanFile, CMake, tools 但我找不到 conans python 注册表中
我正在编写为 rabbitmq-c 创建包的配方图书馆。当选中其 CMake 脚本中的 ENABLE_SSL_SUPPORT 选项时,其构建需要 OpenSSL 库。 如提供的屏幕路径所示,libea
我是一名优秀的程序员,十分优秀!