Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ ';使#u独一无二';不是';std&x27;_C++_Cmake_G++_C++17 - Fatal编程技术网

C++ ';使#u独一无二';不是';std&x27;

C++ ';使#u独一无二';不是';std&x27;,c++,cmake,g++,c++17,C++,Cmake,G++,C++17,我在LinuxMint19.2上使用g++-9和c++17。编译器实际上是在告诉我将包含在我已经包含它的位置附近: /home/luke/workspace/crab/Src/Brain/EpisodicMemory.cpp:2:1: note: ‘std::make_unique’ is defined in header ‘<memory>’; did you forget to ‘#include <memory>’? 1 | #include "Episo

我在LinuxMint19.2上使用g++-9和c++17。编译器实际上是在告诉我将
包含在我已经包含它的位置附近:

/home/luke/workspace/crab/Src/Brain/EpisodicMemory.cpp:2:1: note: ‘std::make_unique’ is defined in header ‘<memory>’; did you forget to ‘#include <memory>’?
    1 | #include "EpisodicMemory.h"
  +++ |+#include <memory>
    2 | #include <memory>

我认为链接Qt可能会改变我的编译器设置,但我不知道为什么会发生这种情况

我通过将-std=c++17替换为set(CMAKE_CXX_STANDARD 17)来修复它

如果我强制使用c++11(它没有确保唯一性),我可以重新编程。你确定使用的是c++17吗std::unique_ptr,C++14中引入了
std::make_unique()
。我想您正在编译C++11,您的CMAKE中是否有
集(CMAKE\u CXX\u STANDARD 11)
<代码>目标编译功能?请回答问题并发布完整的CMakeLists.txt建议:评论
std::unique_ptr
/
std::make_unique()
行,添加包含
iostream
的内容,并添加以下行:
std::cout对于其他刚加入cmake的人,我有一个顶级的CMakeLists,我将其设置为,并且没有意识到较低级别的cmakelists仍然有standard==11,这使得那些可执行文件用11而不是17编译
#include <memory>
int main(int argc, char** argv) {
    std::unique_ptr<int> test = std::make_unique<int>(4);
    return 0;
}
cmake_minimum_required(VERSION 3.10)
project(crab)
find_package(Qt5Widgets)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread -Wall -O0 -g -fsanitize=address -std=c++17 -fPIC")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}")
include_directories(${Qt5Widgets_INCLUDE_DIRS})
#file(GLOB BRAIN_FILES Brain/*.cpp Brain/*.h)
#add_executable(crab ${BRAIN_FILES} main.cpp)
add_executable(crab main.cpp)
target_link_libraries(crab Qt5::Widgets)