2

プロジェクトのすべての警告を有効-Wallにして表示しましたが、多くの警告をポップアップ-Wextraする「ライブラリ」(ライブラリのソースコードをプロジェクトのフォルダーにコピー/貼り付け)も使用しています。libsコードには本(OpenGL Super Bible 5)が付属しており、OpenGLの学習に使用しています。ただし、このコードによって生成されたすべての警告を表示するのではなく、srcフォルダー内の警告のみを表示します。

特定のフォルダからの警告を非表示にする方法はありますか?

私は自分の警告を隠そうとはしません。自分の警告の修正に集中できるように、作成者の警告を削除したいだけです。

警告は

./libs/src/GLTools.cpp:123:6: warning: unused parameter ‘szArgv’ [-Wunused-parameter]
In file included from ./libs/src/GLBatch.cpp:36:0:
./libs/include/GLBatch.h: In constructor ‘GLBatch::GLBatch()’:
./libs/include/GLBatch.h:123:16: warning: ‘GLBatch::nNumTextureUnits’ will be initialized after [-Wreorder]
./libs/include/GLBatch.h:122:16: warning:   ‘GLuint GLBatch::nNumVerts’ [-Wreorder]
./libs/src/GLBatch.cpp:55:1: warning:   when initialized here [-Wreorder]
In file included from ./libs/src/GLBatch.cpp:36:0:
./libs/include/GLBatch.h:131:17: warning: ‘GLBatch::pTexCoords’ will be initialized after [-Wreorder]
./libs/include/GLBatch.h:115:11: warning:   ‘GLuint GLBatch::uiVertexArray’ [-Wreorder]
./libs/src/GLBatch.cpp:55:1: warning:   when initialized here [-Wreorder]
In file included from ./libs/src/GLBatch.cpp:36:0:
./libs/include/GLBatch.h:125:14: warning: ‘GLBatch::bBatchDone’ will be initialized after [-Wreorder]
./libs/include/GLBatch.h:121:16: warning:   ‘GLuint GLBatch::nVertsBuilding’ [-Wreorder]
./libs/src/GLBatch.cpp:55:1: warning:   when initialized here [-Wreorder]
In file included from ./libs/src/GLBatch.cpp:36:0:
./libs/include/GLBatch.h:121:16: warning: ‘GLBatch::nVertsBuilding’ will be initialized after [-Wreorder]
./libs/include/GLBatch.h:118:12: warning:   ‘GLuint* GLBatch::uiTextureCoordArray’ [-Wreorder]
./libs/src/GLBatch.cpp:55:1: warning:   when initialized here [-Wreorder]
./libs/src/GLShaderManager.cpp:481:8: warning: unused parameter ‘szVertexProg’ [-Wunused-parameter]
./libs/src/GLShaderManager.cpp:481:8: warning: unused parameter ‘szFragProg’ [-Wunused-parameter]

-Wunused-parameterこれらの特定の警告(および)を無効にする-Wreorderと、自分のコードで発生する可能性があります。その場合は、そのことについて通知されます。私はC++の初心者なので、コンパイラーがエラーを特定するために私に提供できるすべての支援を求めています。または、私が行う可能性のあることは悪い習慣です。

4

3 に答える 3

2

ライブラリのインクルードファイルを含むパス-isystemの代わりにオプションを使用できます。-includeそうすると、libがそれ自体でコンパイルされたときにのみ警告が表示される可能性があります。これらのファイルをソースファイルに含めても、警告は発生しません

于 2012-09-22T18:23:55.490 に答える
2

makefileは表示されていませんが、次のようになっていると思います。

CC = gcc
CFLAGS = -Wall -Otherflags

MYOBJECTS = obj/foo.o obj/bar.o  # from sources in src/
LIBOBJECTS = obj/baz.o obj/quartz.o  # from sources in lib/
OBJECTS = $(MYOBJECTS) $(LIBOBJECTS)

executable: $(OBJECTS)
    ...

obj/%.o: %.cc
    $(CC) $(CFLAGS) $< -o $@

vpath %.cc src lib

その場合は、ターゲット固有の変数を追加するだけです。

CFLAGS = -Otherflags

$(MYOBJECTS): CFLAGS += -Wall
于 2012-09-22T18:50:26.870 に答える
-1

AntoineG-警告には理由があります。コードを修正します。

于 2012-09-22T18:23:16.237 に答える