WaterRendering icon indicating copy to clipboard operation
WaterRendering copied to clipboard

the problem while compilating

Open antomoe opened this issue 4 years ago • 4 comments

你好,当我编译它显示 Aucune règle pour fabriquer la cible « /foo/bar/freetype/freetype.so », nécessaire pour « Water2 ». Arrêt. (没有规则制造目标“ /foo/bar/freetype/freetype.so”) 请问我该如何解决? 非常感谢!

antomoe avatar Apr 09 '20 14:04 antomoe

这是C++编译时由于没有找到freetype库报的链接错误,具体怎么解决会依赖于你这边的操作系统和开发环境。

一般而言,首先需要在你的系统里安装freetype库,然后修改CMakeList.txt,让它能够找到freetype库,可能还需要添加include path和library path。我自己的环境是Mac OS X,这个CMakeList.txt不一定能在所有环境下运行,可能需要根据你这边的环境做一些别的修改,具体可以参考CMake的官方文档。

hehao98 avatar Apr 09 '20 15:04 hehao98

不好意思 我稍微改了一下cmakelist,现在又显示了新的问题… (因为也是刚接触c++,还不是很熟悉,抱歉) /usr/bin/ld : CMakeFiles/Water2.dir/src/TextRenderer.cpp.o : dans la fonction « TextRenderer::TextRenderer() » : TextRenderer.cpp:(.text+0xd5) : référence indéfinie vers « FT_Init_FreeType » /usr/bin/ld : TextRenderer.cpp:(.text+0x125) : référence indéfinie vers « FT_New_Face » /usr/bin/ld : TextRenderer.cpp:(.text+0x16c) : référence indéfinie vers « FT_Set_Pixel_Sizes » /usr/bin/ld : TextRenderer.cpp:(.text+0x1aa) : référence indéfinie vers « FT_Load_Char » /usr/bin/ld : TextRenderer.cpp:(.text+0x491) : référence indéfinie vers « FT_Done_Face » /usr/bin/ld : TextRenderer.cpp:(.text+0x49d) : référence indéfinie vers « FT_Done_FreeType » collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/Water2.dir/build.make:153: Water2] Error 1 make[1]: *** [CMakeFiles/Makefile2:110: CMakeFiles/Water2.dir/all] Error 2 make: *** [Makefile:130: all] Error 2

antomoe avatar Apr 09 '20 21:04 antomoe

这个是编译的时候已经能找到freetype的include头文件,但是还是没有找到freetype的库文件(.so/.a/.dll之类)的表现。可以尝试找到你安装的那个库文件的位置,用add_library把他手动加进来并在add_executable里加上这个库,然后再看能不能编译。

如果还不能的话,可能是库版本问题或者什么别的问题,可以直接在代码里删掉全部freetype库有关的内容(主要是与输出文字有关的),应该不影响运行。如果要添加简单的控制台和GUI,强烈推荐只有GUI的imgui库,不用考虑复杂的编译链接问题。

hehao98 avatar Apr 10 '20 00:04 hehao98

好的b( ̄▽ ̄)d 我会再次尝试的! 博主超级耐心呐,多次叨扰辛苦啦。 真的超级超级感谢呐!

antomoe avatar Apr 10 '20 07:04 antomoe