说我的文件结构如下:
win32 / Something.cpp
linux / Something.cpp
Something.h
的main.cpp
我将如何实施:
UNAME = $(shell uname -s)
ifeq ($(UNAME), Linux)
OS = linux
else
OS = win32
endif
all:
g++ ?????
我现在已经亏本约一个小时了。我从来没有尝试跨平台makefile,所以我通常只是让IDE处理它,但现在我需要创建它,因为IDE并没有真正用于跨平台项目。
PS:Something.h只是一个类定义/原型,而linux /和win32 / source文件只是为该类提供了一种方法。问题是我得到一个编译错误,说如果两个都没有某种形式的构建目标或其他什么存在,那么该类已经被声明。
感谢。
答案 0 :(得分:1)
多平台Makefile是一个高级主题。你可能想看看scons。无论如何,这是你如何使你的案件工作:
根据$(UNAME)
:
UNAME = $(shell uname -s)
TARGET = myprogam
SRC_COMMON = main.cpp
ifeq ($(UNAME), Linux)
SRC_OS = $(wildcard linux/*.cpp)
else
SRC_OS = $(wildcard win32/*.cpp)
endif
SRC = $(SRC_COMMON) $(SRC_OS)
OBJ = $(SRC:.cpp=.o)
$(TARGET): $(OBJ)