Automake无法识别Objective-C / C ++

时间:2014-07-24 21:17:50

标签: objective-c objective-c++ autoconf automake

我有configure.ac,用于构建共享库(linux和macos)。现在我想添加使用此库并显示其功能的特殊演示应用程序。但是这个演示应用程序仅适用于MacOS并且其中包含.mm文件(main.mm)。我正试图以这种方式为这个演示应用程序定义一个目标:

if OS_DARWIN
  EXTRA_PROGRAMS = app-demo
  app_demo_CC = OBJC
  app_demo_CXX = OBJC
  app_demo_SOURCES = demoapp/config.cc demoapp/config.h \
    demoapp/main.mm demoapp/AppDelegate.m \
    demoapp/renderer-stub.cc demoapp/renderer-stub.h \
    demoapp/view.cc demoapp/view.h
  app_demo_CPPFLAGS = ... # include directories here
  app_demo_LDFLAGS = ... # libraries and library search paths
endif

这是我的顶级Makefile.am,正如您所看到的,demoapp文件夹包含演示应用程序的所有源代码和两个Objective-C文件:main.mm和AppDelegate.m。 但是,当我尝试运行make app-demo时,我得到了这个:

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable

这意味着(我从make日志中确认)main.mm尚未编译,也没有链接。 有谁知道这方面的解决方法?

2 个答案:

答案 0 :(得分:0)

我不认为这是调试问题的足够信息。

我认为automake支持ObjC ++。调用automake时会出错吗?你的configure.ac是否调用AC_PROG_OBJCXX?如果您尝试手动编译文件,它是否有效?

答案 1 :(得分:0)

通过在Makefile.am中定义单独的目标来解决此问题:

.mm.o :
      $(OBJCXX) -x objective-c++ -c @DEFS@ $(CPPFLAGS) $(app_demo_CPPFLAGS) $< -o $@