Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux mac OS上的Makefile命令显示不正确的输出_Linux_Macos_Makefile_Gnu Make - Fatal编程技术网

Linux mac OS上的Makefile命令显示不正确的输出

Linux mac OS上的Makefile命令显示不正确的输出,linux,macos,makefile,gnu-make,Linux,Macos,Makefile,Gnu Make,我是Mac OS新手,希望执行以下makefile程序 GCCBASE = $(GCMDIR)/where/cplusplus/gcc SRCS:=$(wildcard *.cpp) program.cpp OBJS:=$(SRCS:.cpp=$(OBJDIR).o) INCLUDES:=-I. -I$(ADD_INCLUDES)/Auto*.h -I$(ADD_INCLUDES)/program.h OUTBASE =$(OUTBASE_EX) OUT_ARTIFACT=Program if

我是Mac OS新手,希望执行以下makefile程序

GCCBASE = $(GCMDIR)/where/cplusplus/gcc
SRCS:=$(wildcard *.cpp) program.cpp
OBJS:=$(SRCS:.cpp=$(OBJDIR).o)
INCLUDES:=-I. -I$(ADD_INCLUDES)/Auto*.h -I$(ADD_INCLUDES)/program.h
OUTBASE =$(OUTBASE_EX)
OUT_ARTIFACT=Program

ifeq ($(OSNAME),Linux)
    ifeq ($(GFLIB_MODEL),64bit)
            CXXEXTRA_FLAGS = -m64
            GCCDIR = $(GCCBASE)/linux64/4.5.3
            GCCLIBDIR_W = $(GCCBASE)/linux64/4.5.3/lib64
            GCCLIBDIR = $(GCCLIBDIR_W)                
            CFLAGS_common += -I$(GCCBASE)/linux64/4.5.3/include
            OUTDIR = $(OUTBASE)/64
            CFLAGS_link_libs = -L$(GCCLIBDIR) -lmyLib                
    else
            CXXEXTRA_FLAGS = -m32
            GCCDIR = $(GCCBASE)/linux/4.5.3
            GCCLIBDIR_W = $(GCCBASE)/linux/4.5.3/lib
            GCCLIBDIR = $(GCCLIBDIR_W)
            CFLAGS_common += -I$(GCCBASE)/linux/4.5.3/include
            OUTDIR = $(OUTBASE)/32
    CFLAGS_link_libs = -L$(GCCLIBDIR) -lmyLib                
endif
endif
ifeq ($(OSNAME),Darwin)
echo "Mac OS"
    ifeq ($(GFLIB_MODEL),64bit)
            CXXEXTRA_FLAGS = -m64
            GCCDIR = $(GCCBASE)/macosx/4.8.1
            GCCLIBDIR_W = $(GCCBASE)/macosx/4.8.1/lib
            GCCLIBDIR = $(GCCLIBDIR_W)               
            CFLAGS_common += -I$(GCCBASE)/macosx/4.8.1/include
            OUTDIR = $(OUTBASE)/64
            CFLAGS_link_libs = -L$(GCCLIBDIR) -lmyLib                
    else
            CXXEXTRA_FLAGS = -m32
            GCCDIR = $(GCCBASE)/macosx/4.8.1
            GCCLIBDIR_W = $(GCCBASE)/macosx/4.8.1/lib/i386
            GCCLIBDIR = $(GCCLIBDIR_W)
            CFLAGS_common += -I$(GCCBASE)/macosx/4.8.1/include
            OUTDIR = $(OUTBASE)/32
    CFLAGS_link_libs = -L$(GCCLIBDIR) -lmyLib                
endif
endif
all: $(SRCS)
    echo "Building Program application..."
    $(CXX) $(CXXEXTRA_FLAGS) $(CFLAGS_common) $(INCLUDES) $^ -o $(OUTDIR)/$(OUT_ARTIFACT) $(CFLAGS_link_libs)        
    rm -f *.[o] *.log core
在mac OS上执行的命令如下所示,其中包含链接器错误,因为找不到myLib:

[exec] c++   -I. -IAuto*.h -IProgram.h Program.cpp -o /Program
我希望我的命令是这样的:

[exec] c++ -m32 -I. -IAuto*.h -IProgram.h Program.cpp -o /Program -LmyPath -lmyLib
为什么我的命令不包括-m32和链接库路径


我还尝试打印CXXEXTRA_标志和CFLAGS_链接_库,但它们是空的。

您从未将变量
OSNAME
GFLIB_MODEL
设置为此makefile中的任何值,因此它们都是空的。因此,
OSNAME
的两个测试都不是真的,并且这些值从未在
CXXEXTRA_标志
等中设置

ETA:以下是一个基于您评论的示例:

$ cat Makefile
ifeq ($(OSTYPE),Mac OS X)
   $(info got mac)
endif

all: ; @:

$ make

$ make OSTYPE=Mac

$ make OSTYPE='Mac OS X'
got mac

谢谢Madstinst:如果我传递的OSNAME是“MacOSX”而不是“Darwin”,那么我如何在makefile中比较它呢。ifeq($(OSNAME),Darwin)应该被什么替换?明显的
ifeq($(OSNAME),Mac OS X)
不起作用吗?不,它对我不起作用,对空格分隔词的任何更改,可能是?你做错了什么;它很好用。然而,因为我们不知道你到底在做什么,我们也帮不了你。请更新您的问题并显示您正在使用的实际设置。