C++ C++;boost/multiprecision:致命错误:mpfr.h:没有这样的文件或目录

C++ C++;boost/multiprecision:致命错误:mpfr.h:没有这样的文件或目录,c++,boost,cmake,boost-multiprecision,C++,Boost,Cmake,Boost Multiprecision,我遵循并习惯于使用高精度浮点数() main.cpp #include <iostream> #include <boost/multiprecision/mpfr.hpp> // Defines the Backend type that wraps MPFR int main(int argc, char** argv) { namespace mp = boost::multiprecision; // Reduce the typing a b

我遵循并习惯于使用高精度浮点数()

main.cpp

#include <iostream>
#include <boost/multiprecision/mpfr.hpp>  // Defines the Backend type that wraps MPFR

int main(int argc, char** argv)
{
    namespace mp = boost::multiprecision;     // Reduce the typing a bit later...
    typedef mp::number<mp::mpfr_float_backend<300> >  my_float;
    my_float a, b, c; // These variables have 300 decimal digits precision

    return 0;
}
甚至连安装和调试都不起作用

怎么了

CMakeLists.txt

cmake_minimum_required(VERSION 2.8.9)
project (main)

# Libraries
set(Boost_USE_STATIC_LIBS OFF) 
set(Boost_USE_MULTITHREADED ON)  
set(Boost_USE_STATIC_RUNTIME OFF) 
find_package(Boost 1.54.0 COMPONENTS filesystem regex system thread date_time wave) 

if(NOT Boost_FOUND)
    message( FATAL_ERROR "Boost 1.54.0 not found." )
endif()
include_directories(SYSTEM ${Boost_INCLUDE_DIR})

# Flags
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wfatal-errors -std=c++11")


include_directories(${Boost_INCLUDE_DIRS}) 

# pre executable commands


add_executable(main
    main.cpp
)


# Link
target_link_libraries(main ${Boost_LIBRARIES})
target_link_libraries(main ${CMAKE_THREAD_LIBS_INIT})
如果您想使用后端,您必须单独安装它,确保它是构建的,并且确保它的头位于编译器的INCLUDE路径中,其二进制文件(库)位于链接器的命令行中


(MPFR不是GMP。)

您必须在cmake文件中包含GMP和mfr的库

在qmake中使用:LIBS+=-lgmp-lmpfr

如果你不知道如何使用cmake,就让qmake制作一个cmake文件吧,我不使用cmake,但我知道它很相似,但我忘了怎么做,或者我只想做它并发布结果,对不起,但是这些年来我忘记的所有事情,比如我把我的记忆放在哪里了;但和他们一样,这篇文章也很老了,所以任何找到它的人都会觉得这很有帮助

这将满足以下要求,以及其他一些要求:

 #include <boost/multiprecision/cpp_dec_float.hpp>
 #include <boost/multiprecision/mpfr.hpp>
 #include <boost/multiprecision/gmp.hpp>
#包括
#包括
#包括

如果要使用后端,必须单独安装,并确保它位于编译器包含路径中。(MPFR不是GMP。)@davidbak,它编译。谢谢。只是链接失败了<代码>CMakeFiles/main.dir/main.cpp.o:函数内boost::multiprecision::backends::detail::gmp_float_imp::~gmp_float_imp():main.cpp:(.text.):未定义对u_gmpf_clear'的引用,因此现在请确保已按照它们的指示构建MPFR,并且生成的库文件位于链接器路径中(或链接器命令行上)。。。(我所说的库是一个
.o
或者可能是
.so
)刚刚找到了它
target\u link\u库(主mpfr gmp)
解决了这个问题。如果Boost文档更完整,那就更好了。考虑加强它!
 #include <boost/multiprecision/cpp_dec_float.hpp>
 #include <boost/multiprecision/mpfr.hpp>
 #include <boost/multiprecision/gmp.hpp>