使用目标target_include_directories时,CMake无法指定包含目录 [英] Cmake Cannot specify include directories when use target target_include_directories

查看:1333
本文介绍了使用目标target_include_directories时,CMake无法指定包含目录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在项目中使用子模块GitHub,现在我想使用 target_include_directories 将文件包含在我的项目类中

I'm using the submodule GitHub inside my project and now I want to use the target_include_directories for including the file inside the my project class

这是我的cmake配置

This is my cmake configuration

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我有这个错误

When run CMake I have this error

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的新手,我听不懂我错了

I'm new with the C++ and the cmake and I can't understand what I'm wrong

推荐答案

我要添加此问题的解决方案,如何在注释中建议此代码错误,因为有两个问题

I want add the solution to this problem, how suggestion in the comment this code this wrong because have two problem

   target_include_directories(${PROJECT_NAME}  PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/include/rapidjson/include)




  1. 目标的第一个参数必须是可执行文件的名称,因此在这种情况下,就是SpyCBlock

  2. 第二个问题是在声明目标之前定义目标,因此 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>

now I can include the library how <bitcoin-cryptography-library/Sha256.h>

这篇关于使用目标target_include_directories时,CMake无法指定包含目录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆