- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在我的项目中使用子模块 GitHub,现在我想使用 target_include_directories
将文件包含在我的项目类中
这是我的cmake配置
cmake_minimum_required(VERSION 3.9)
project(SpyCBlock)
set(CMAKE_CXX_STANDARD 14)
#bitcoin rpc lib
find_library(bitcoinapi 0.3 REQUIRED)
target_include_directories(rapidjson PUBLIC include/rapidjson/include)
target_include_directories(spycblockrpc PUBLIC include/spycblockrpc)
target_include_directories(btccryptography PUBLIC include/bitcoin-cryptography-library)
add_executable(
${PROJECT_NAME}
#other inclusion file cpp
#cpp-properties file include
include/cpp-properties/src/Properties.cpp
include/cpp-properties/src/PropertiesParser.cpp
include/cpp-properties/src/PropertiesUtils.cpp
#include bitcoin-cryptography-library
include/bitcoin-cryptography-library/cpp/Sha256.cpp
include/bitcoin-cryptography-library/cpp/Sha256Hash.cpp
include/bitcoin-cryptography-library/cpp/Utils.cpp
#include spycblocrpc
include/spycblockrpc/core/graph/TransactionGraph.cpp
include/spycblockrpc/core/graph/WrapperInformations.cpp
include/spycblockrpc/ConfiguratorSingleton.cpp
include/spycblockrpc/commands/DecodeScriptCommand.cpp
include/spycblockrpc/commands/DecodeRawTransaction.cpp
include/spycblockrpc/commands/HeightBlockchainCommand.cpp
include/spycblockrpc/commands/DecodeBlockAtIndexCommand.cpp
)
#bitcoin rpc lib
target_link_libraries(SpyCBlockTests bitcoinapi)
target_link_libraries(${PROJECT_NAME} bitcoinapi)
运行 CMake 时出现此错误
Starting to parse CMake project.
CMake Error at CMakeLists.txt:20 (target_include_directories):
Cannot specify include directories for target "rapidjson" which is not
built by this project.
CMake Error at CMakeLists.txt:22 (target_include_directories):
Cannot specify include directories for target "spycblockrpc" which is not
built by this project.
CMake Error at CMakeLists.txt:24 (target_include_directories):
Cannot specify include directories for target "btccryptography" which is
not built by this project.
CMake Error at CMakeLists.txt:26 (target_compile_definitions):
Cannot specify compile definitions for target "cppproperties" which is not
built by this project.
我是 C++ 和 cmake 的新手,我不明白我错了什么
最佳答案
我想添加这个问题的解决方案,按照评论中的建议,代码有两个问题:
target_include_directories(${PROJECT_NAME} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/include/rapidjson/include)
target_include_directories(SpyCBlock ...)
在 add_executable(${PROJECT_NAME} ...)
之前定义一个最小的正确示例是:
add_executable(
${PROJECT_NAME}
#other inclusion file cpp
#cpp-properties file include
include/cpp-properties/src/Properties.cpp
include/cpp-properties/src/PropertiesParser.cpp
include/cpp-properties/src/PropertiesUtils.cpp
#include bitcoin-cryptography-library
include/bitcoin-cryptography-library/cpp/Sha256.cpp
include/bitcoin-cryptography-library/cpp/Sha256Hash.cpp
include/bitcoin-cryptography-library/cpp/Utils.cpp
#include spycblocrpc
include/spycblockrpc/core/graph/TransactionGraph.cpp
include/spycblockrpc/core/graph/WrapperInformations.cpp
include/spycblockrpc/ConfiguratorSingleton.cpp
include/spycblockrpc/commands/DecodeScriptCommand.cpp
include/spycblockrpc/commands/DecodeRawTransaction.cpp
include/spycblockrpc/commands/HeightBlockchainCommand.cpp
include/spycblockrpc/commands/DecodeBlockAtIndexCommand.cpp
)
target_include_directories(${PROJECT_NAME} PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/include/rapidjson/include)
现在我可以像这样包含库 <bitcoin-cryptography-library/Sha256.h>
.
关于c++ - Cmake 在使用目标 target_include_directories 时无法指定包含目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57671273/
我对 cmake 很陌生。我以前使用过makefile,但由于QtCreator,我被迫使用cmake。我也在努力学习glfw。我有以下 cmake 文件:- cmake_minimum_requir
我在多个地方看到在定义包含目录时使用生成器表达式的引用,因此您可以在编译和安装期间为包含定义不同的位置。例如: # Define headers for this library. PUBLIC he
与 CMake 的 target_include_directories 相关的关键字 PUBLIC、PRIVATE 和 INTERFACE 的含义是什么? 最佳答案 这些关键字用于告知何时需要您传递
在我的项目中,我尝试练习良好的 Cmake 用法,并希望将所有 include_directories() 更改为 target_include_directories()。 我的项目结构是这样的:
假设我有一个看起来像这样的项目: Project (dir) -- CMakeLists.txt -- MyLib (dir) |-- CMakeLists.txt
我有一个 CMake 项目,它构建了一个依赖于另一个静态库的静态库。我想把这个静态库变成一个 object libraries .当我这样做时,我得到一个编译器错误,我想我对对象库有一些不了解。 这是
这个问题在这里已经有了答案: What is the difference between include_directories and target_include_directories in
这是来自 make CMakeLists.txt 的片段: add_library(foo-object OBJECT src/foo.cpp) target_include_directories(
在我的 main.cpp 的顶部文件,No such file or directory被扔在 #include . 通过 g++ -I"C:\Libraries\64_bit\SQLite3\in
这是我的c++项目。 ├── CMakeLists.txt ├── include │ └── ccli └── # headers ├── src │ ├── CMakeL
我在我的项目中使用子模块 GitHub,现在我想使用 target_include_directories 将文件包含在我的项目类中 这是我的cmake配置 cmake_minimum_require
我正在编写一个 C++ 库(仅 header )并使用 CMake 生成我的 (Visual Studio) 项目和解决方案文件。我还在编写一个测试套件,它是同一个 CMake 项目的一部分。 当我在
我们的 CMakeList.txt有一个 target_include_directories潜入。它破坏了我们的低级客户端,如 Ubuntu LTS、CentOS 和 Solaris。 我知道我可以
如何强制 CMake 的功能 target_include_directories()将值视为绝对路径? 例如,我想要这行代码: target_include_directories(foobar
我有一个项目 ├── CMakeLists.txt │ ├── log │ │ ├── CMakeLists.txt │ │ ├── include │ │ │ ├──
CMake 2.8.11 引入了 target_include_directories 和 target_compile_definitions。然而,我正在使用的一些设备有 2.8.9。而且我不想在
我的 C++ 代码有一个目录结构,如下所示: | |->include |->src 我正在为我的代码编写一个 CMakeLists.txt 文件。我想了解 CMake 中 include_direc
我正在尝试使用以下目录结构构建一个库: lib1 |-include | |-lib1 | |-public.h |-src | |-private.h | |-private.cpp | |-p
我正在使用外部文件来处理我的库,所以我不想在我的文件 C++ 中使用相对路径,但我想使用这个约定 我读到如果使用 target_include_directories 可以使用 CMake 创建它我是
使用 CMake 2.8+,您可以使用 target_include_directories() 避免冗余设置包含目录. 例如通过写作 add_libary(mylib SHARED ${SOURCE
我是一名优秀的程序员,十分优秀!