gpt4 book ai didi

c++ - 如何选择为每个平台编译哪些源文件?

转载 作者:行者123 更新时间:2023-11-28 06:17:17 28 4
gpt4 key购买 nike

假设我的文件结构如下:

  • 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 只是一个类定义/原型(prototype),linux/和 win32/源文件只是为该类提供一个方法。问题是我得到一个编译错误,指出如果类都存在而没有某种形式的构建目标或其他任何形式,则该类已被声明。

谢谢。

最佳答案

多平台 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)

关于c++ - 如何选择为每个平台编译哪些源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30020387/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com