编译我的程序后
$ cmake .
$ make
Run Code Online (Sandbox Code Playgroud)
我收到这种形式的 5 个错误:
$ make
Scanning dependencies of target Project
[ 50%] Building CXX object CMakeFiles/myproj.dir/main.cpp.o
In file included from /path/to/my/proj/main.cpp:2:0:
/path/to/my/proj/library.hpp: In member function ‘virtual double MyProjClass::get_value(double, double) const’:
/path/to/my/proj/library.hpp:419:26: error: ‘sqrtf’ is not a member of ‘std’
const float F = (std::sqrtf(1.0f + 2.0f) - 1.0f) / 2;
^
Run Code Online (Sandbox Code Playgroud)
其他错误包括floorf不是std.
查看此线程,这是因为我没有使用 C++11 进行编译,而查看此线程线程,“[...] CMake 将确保使用适当的命令行标志调用 C++ 编译器。”
好吧,我的 CMake 显然没有这样做。为什么我会收到这些错误,我该如何修复它们?
编辑:这是我的 CMakeLists.txt
cmake_minimum_required(VERSION 3.5)
project(Noise)
set(CMAKE_CXX_STANDARD 11)
set(SOURCE_FILES main.cpp vector.hpp noise.hpp)
add_executable(Noise ${SOURCE_FILES})
find_package(SDL2 REQUIRED)
include_directories(${SDL2_INCLUDE_DIRS})
target_link_libraries(Noise ${SDL2_LIBRARIES})
Run Code Online (Sandbox Code Playgroud)
您没有说明您使用的是什么 C++ 编译器,但假设它是 g++ 5.x 到 7,sqrtf
并且floorf不在,或std下的命名空间内。它们只是在全局命名空间中,当被包含时。-std=c++11-std=c++14-std=c++1zcmath
| 归档时间: |
|
| 查看次数: |
2847 次 |
| 最近记录: |