如何同时编译标头和*.mm
文件以使用make
从命令行生成可执行文件?
这是我的makefile
CC=gcc
FRAMEWORKS:= -framework Foundation
LIBRARIES:= -lobjc
SOURCE=myheader.h
LDFLAGS=$(LIBRARIES) $(FRAMEWORKS)
OUT=-o execName
all:
$(CC) $(LDFLAGS) $(OUT)
当我运行make
时,我得到了这个输出:
Undefined symbols:
"_main", referenced from:
start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [all] Error 1
关于此问题的每个其他帖子的唯一答案是代码不包含main()
方法。但是我做有一个主要的方法。
我的标题文件:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#import <Foundation/Foundation.h>
//declarations for an enum and methods here
int main(int argc, char * argv[]);
我的*.mm
文件:
#include <myheader.h>
//methods and variable declarations and definitions here
int main(int argc, char * argv[]){
//code here
return 0;
}
答案 0 :(得分:1)
以下是makefile的固定版本:
# makefile
CC = gcc
CFLAGS = -Wall
FRAMEWORKS = -framework Foundation
LIBRARIES = -lobjc
SOURCES = myfile.mm
LDFLAGS = $(LIBRARIES) $(FRAMEWORKS)
execName: $(SOURCES)
$(CC) $(CFLAGS) $(SOURCES) $(LDFLAGS) -o $@