注:この質問は、私が書いている間に解決されました。この問題に関する情報を見つけるのに苦労したので、とにかく投稿すると役立つと思います。アドバイス歓迎。
こんにちは、みんな。最近、Linux Mint に GCC 4.9.1 をインストールし、いくつかのプロジェクトをコンパイルしましたが、すべてがスムーズに進みました。
今度は、ソース ファイルの並べ替えから始めて、そのようなプロジェクトの 1 つに再び取り組みたいと思います。そこで、新しいフォルダーを作成し、いくつかの .h ファイルと .tpp ファイルをその中に移動しました。構造は次のようになります。
.
├── clip
│ ├── Clip.h
│ ├── ClipImpl.tpp
│ └── Mask.h
:
├── main.cpp
:
├── vect.cpp
├── vect.h
:
main.cpp
は単なる#include "clip/Clip.h"
であり、後でテスト目的でいくつかのテンプレートのインスタンス化が含まれます。clip/Clip.h
が含まれclip/Mask.h
ていますvect.h
。
後者のインクルードは満たされていないことに注意してください。そのため、コンパイラーは正しく文句を言います。ここで、すべての#include
s を、作成元のファイルではなく、プロジェクトのルートに相対的にしたいと考えています。わかりました、私は自分の Makefile を編集します:
# Retrieve the root directory
WD = $(shell pwd)
...
# Add it to the include search paths
%.o: %.cpp # vvvvvvv
$(CXX) $(CXXFLAGS) -I$(WD) -c $<
そして… ブーム??
g++ -std=c++1y `sdl2-config --cflags` -Wall -Wextra -Winline -fno-rtti -I/home/quentin/NetBeansProjects/glk -c AutoDisplayed.cpp
In file included from /home/quentin/NetBeansProjects/glk/time.h:4:0,
from /usr/include/sched.h:33,
from /usr/include/pthread.h:23,
from /opt/gcc-4.9.1/include/c++/4.9.1/x86_64-unknown-linux-gnu/bits/gthr-default.h:35,
from /opt/gcc-4.9.1/include/c++/4.9.1/x86_64-unknown-linux-gnu/bits/gthr.h:148,
from /opt/gcc-4.9.1/include/c++/4.9.1/ext/atomicity.h:35,
from /opt/gcc-4.9.1/include/c++/4.9.1/bits/basic_string.h:39,
from /opt/gcc-4.9.1/include/c++/4.9.1/string:52,
from /opt/gcc-4.9.1/include/c++/4.9.1/stdexcept:39,
from /opt/gcc-4.9.1/include/c++/4.9.1/array:38,
from /opt/gcc-4.9.1/include/c++/4.9.1/tuple:39,
from /opt/gcc-4.9.1/include/c++/4.9.1/bits/stl_map.h:63,
from /opt/gcc-4.9.1/include/c++/4.9.1/map:61,
from AutoDisplayed.h:5,
from AutoDisplayed.cpp:1:
/opt/gcc-4.9.1/include/c++/4.9.1/functional: In member function ‘_Result std::_Bind<_Functor(_Bound_args ...)>::operator()(_Args&& ...)’:
/opt/gcc-4.9.1/include/c++/4.9.1/functional:1322:8: error: ‘forward_as_tuple’ is not a member of ‘std’
std::forward_as_tuple(std::forward<_Args>(__args)...),
^
私はかなりのことを検索しましたが、実際にこの文を書いているときに何が起こっているのかを知りました.