源代码文件分别编译为目标文件,但目标文件不会一起编译

时间:2018-09-05 10:30:38

标签: c++ compiler-errors linker-errors static-linking

我有一个C ++项目,该项目使用多个外部静态库和庞大的代码库。

如果我像这样把它们放在一起:

g++ (ALL INCLUDE PATHS) (FLAGS) (ALL LIBRARIES) (ALL SOURCES) -o FILE

在同一命令中一次全部起作用。


但是我想使用Makefile生成文件对象并加快编译过程。

我能够为每个单独的源文件生成一个目标文件,但是当尝试将它们全部组合成这样时:

g++ -o FILE (ALL OBJECT FILES FOUND RECURSIVELY IN THE PATH)

我收到以下错误,好像它们不是使用静态库编译的一样

Linux_Release/.compilation_libs/linux.o: In function `WndProc(int, int, int)':
main_Linux.cpp:(.text+0xc6): undefined reference to `XRefreshKeyboardMapping'
main_Linux.cpp:(.text+0x18c): undefined reference to `XLookupKeysym'
main_Linux.cpp:(.text+0x20b): undefined reference to `Xutf8LookupString'
...

我试图再次将includes / flags / libraries放回命令中,但这没什么不同。

以下是我用于分别编译每个源文件的标志:

  

CFLAGS:= -fmessage-length = 0 -std = c ++ 11 -Wno-sign-compare   -Wno-unused-local-typedefs -Wno-reorder -Wno-switch -fpermissive -static-libstdc ++ -static-libgc        c -Wl,-rpath =。

这是上面命令中包含的一些库

  

LIBS:= -lcurl -lz -lX11 -lXi -lGL -lGLU -lGLEW -lfreetype -lbass -lbass_fx -lOpenCL(还有更多...)

构建每个文件对象的目标如下:

  

$(COMPILATION_LIBS_FOLDER)/%。o:%.cpp
  mkdir -p'$(@ D)'
  g ++ $(CFLAGS)$(FIXED_INCLUDES)$(LIBPATH)$(LIBS)-c $ <-o $ @

0 个答案:

没有答案