小编Ond*_*til的帖子

用于 cmake 的 OPENSSL_ROOT_DIR

我已经在我的系统上构建并安装了 openssl 1.1.1

openssl version
OpenSSL 1.1.1h-dev  xx XXX xxxx
Run Code Online (Sandbox Code Playgroud)

各自的libcrypto.solibssl.so位于/usr/local/lib64, 标题中/usr/local/include。我创建/etc/ld.so.conf.d/usrlocal.conf并添加/usr/local/lib64到那里以确保 .so 是可加载的。

一个旧版本(1.0.2)/usr/lib64//usr/include我需要保留其他依赖项。

我正在尝试编译需要的OQS 库( https://github.com/open-quantum-safe/liboqs )

find_package(OpenSSL 1.1.1 REQUIRED)
Run Code Online (Sandbox Code Playgroud)

当我尝试编译库时,我得到

CMake Error at /usr/local/share/cmake-3.17/Modules/FindPackageHandleStandardArgs.cmake:164 (message):
  Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
  system variable OPENSSL_ROOT_DIR: Found unsuitable version "1.0.2k", but
  required is at least "1.1.1" (found /usr/lib64/libcrypto.so)
Call Stack (most …
Run Code Online (Sandbox Code Playgroud)

openssl cmake

6
推荐指数
1
解决办法
2万
查看次数

FetchContent 与ExternalProject

我正在使用 Cmake 构建一个项目并用于FetchContent管理依赖项。由于多种原因,我不能依赖系统范围内安装的软件包,因此这个软件包有很大帮助。它允许我做这样的事情:

cmake_minimum_required(VERSION 3.14)
project(dummy LANGUAGES C CXX)
include(FetchContent)
FetchContent_Declare(nlohmann
    GIT_REPOSITORY https://github.com/onavratil-monetplus/json
    GIT_TAG v3.7.3
)
FetchContent_MakeAvailable(nlohmann)

add_executable(dummy main.cpp)
target_link_libraries(dummy PUBLIC nlohmann_json::nlohmann_json)
Run Code Online (Sandbox Code Playgroud)

现在,只要存储库是带有CMakeLists.txt. 我很乐意对非 cmake 项目使用类似的方法,例如 Botan 库。显然

FetchContent_Declare(botan
    GIT_REPOSITORY https://github.com/onavratil-monetplus/botan
    GIT_TAG 2.17.2
)
FetchContent_MakeAvailable(botan)
Run Code Online (Sandbox Code Playgroud)

并没有真正完成这项工作,构建不会运行,因为它不是一个 cmake 项目。有人会考虑添加

  CONFIGURE_COMMAND "<SOURCE_DIR>/configure.py --prefix=<BINARY_DIR>"
  BUILD_COMMAND "cd <SOURCE_DIR> && make"
Run Code Online (Sandbox Code Playgroud)

或类似于声明命令的命令,但FetchContent文档明确表示这些特定参数在传递给FetchContent.

现在斗争是显而易见的 - 如何FetchContent在这种情况下正确使用?我正在考虑ExternalProject_Add在 fetchcontent 之后使用,但 fetchcontent 似乎没用(ExternalProject 也可以下载 git repo)。此外,我想在配置时使用 botan 的一些目标(如果有意义的话)。

c++ cmake external-project

6
推荐指数
1
解决办法
4774
查看次数

嵌套可移动对象的 std::containers

我有一类NoCopy可移动的,但不是可复制的

我需要制作3 个NoCopy. 我可以创建一个空的,但无法添加任何元素。

我可以制作一个std::vector<NoCopy>orstd::queue<NoCopy>并填充它们。但不是为了std::vector<std::queue<NoCopy>>.

MWE:

#include <iostream>
#include <vector>
#include <queue>

class NoCopy{
public:
    NoCopy() = default;
    NoCopy& operator = (const NoCopy&) = delete;
    NoCopy(const NoCopy&) = delete;

    NoCopy(NoCopy&&) = default;
    NoCopy& operator = (NoCopy&&) = default;

};
using QNC = std::queue<NoCopy>;

int main(void) {
    QNC q;
    q.push(std::move(NoCopy()));

    std::vector<NoCopy> ncvec;
    ncvec.emplace_back();

    std::cout << "Queue size " << q.size() << ", vector size: " << …
Run Code Online (Sandbox Code Playgroud)

c++ containers movable

5
推荐指数
1
解决办法
51
查看次数

标签 统计

c++ ×2

cmake ×2

containers ×1

external-project ×1

movable ×1

openssl ×1