我使用外部文件来处理我的库,但是我不想使用文件C++中的相对路径,但是我想使用这个约定
我读到用CMake创建这个目标是可能的,如果使用目录,我是Cmake的新手,并且在我的项目中配置这个目标有问题
这是我的目录配置

这是我的CMake配置
cmake_minimum_required(VERSION 2.6)
project(decompile-bitcoin-script)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES
main.cpp
#Bitcoin Lib
bitcoinlib/script.cpp
bitcoinlib/script_error.cpp
bitcoinlib/key_io.cpp
bitcoinlib/pubkey.cpp
bitcoinlib/sign.cpp
bitcoinlib/standard.cpp
)
add_executable(Decompiler ${SOURCE_FILES})
target_include_directories(Decompiler PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/bitcoinlib)这是编译器错误。
[ 12%] Building CXX object CMakeFiles/Decompiler.dir/main.cpp.o
[ 25%] Building CXX object CMakeFiles/Decompiler.dir/bitcoinlib/script.cpp.o
/home/vincenzo/Github/decompiler-bitcoin-script/bitcoinlib/script.cpp:6:10: fatal error: bitcoinlib/script.h: No such file or directory
#include <bitcoinlib/script.h>
^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
CMakeFiles/Decompiler.dir/build.make:86: recipe for target 'CMakeFiles/Decompiler.dir/bitcoinlib/script.cpp.o' failed
make[2]: *** [CMakeFiles/Decompiler.dir/bitcoinlib/script.cpp.o] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/Decompiler.dir/all' failed
make[1]: *** [CMakeFiles/Decompiler.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2在main中没有代码,但我只有一个cout<<"foo";
我做错什么了?
发布于 2019-09-18 17:28:34
target_include_directories(Decompiler PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>/bitcoinlib)这一行告诉编译器./bitcoinlib是包含路径的根。
所以#include <bitcoinlib/script.h>在找./bitcoinlib/bitcoinlib/script.h。
您似乎已经在源代码/headers目录中设置了带有CMakeLists.txt的项目目录,因此可以这样更改target_include_directories设置:
target_include_directories(Decompiler PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>)或者,您可以将./bitcoinlib/script.cpp更改为#include <script.h>,因为该标头与.cpp文件位于同一个目录中。
不过,我建议您稍微调整一下您的项目:
<Project Directory>
CMakeLists.txt
include
bitcoinlib
< your bitcoinlib headers here >
src
bitcoinlib
< your bitcoinlib sources here >
main.cpptarget_include_directories(Decompiler PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)https://stackoverflow.com/questions/57996718
复制相似问题