はCMakeの: 'sqrtf' が 'STD' のメンバではありません
$ cmake .
$ make
で私のプログラムをコンパイルした後、私はこのフォームの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;
^
他のエラーがfloorf
がされていない含めます会員はstd
です。
this threadを見ると、私はC++ 11でコンパイルしていないので、this threadスレッドを見て "[...] 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})
問題は、あなたの 'CMakeLists.txt'ファイルまたはC++コードのいずれかにあります。あなたはどちらも示していないので、私たちは手伝ってはいけません。 – Angew
'sqrtf'または' floorf'を使う理由は?特にC++ 11の場合、 'sqrt'は' float'を直接扱うことができます。 – oLen
@Angew Added CMakeLists.txt oLen:あなたのコメントはこれを解決しました。 floorfとsqrtfのすべてのインスタンスをfloorとsqrtに置き換えると、エラーが取り除かれました。理由は分かりません。 – Mossmyr