【问题标题】:Macro define issue for g++ in cygwincygwin中g ++的宏定义问题
【发布时间】:2020-07-26 00:57:14
【问题描述】:

我在 cygwin 中创建了一个 make 项目。

src = $(shell ls | grep .cpp)
obj = $(src:%.cpp=%.o)

$(page_timeout): $(obj)
   $(cc) -o -D BUILD_TYPE $(page_timeout) $(obj)

$(synchronize): $(obj)
   $(cc) -o -DBUILD_TYPE=2 $(synchronize) $(obj)

你可以发现我在makefile中尝试了2个宏定义。但它们都不起作用。这意味着g++在遵守时不知道BUILD_TYPE。

【问题讨论】:

  • BUILD_TYPE 应该是什么? page_timeoutsynchronize 定义在哪里?您缺少在-o 之后立即定义输出文件

标签: g++ cygwin gnu-make


【解决方案1】:

最后,我在编译前通过 config CXXFLAGS 为 c++ 定义 Build_type。

主 make 文件中的详细信息。

$(page_timeout):
    $(MAKE) clean
    $(MAKE) -f make_page.mk objs
    $(cc) -o $(page_timeout) $(obj)

$(inquiry):
    $(MAKE) clean
    $(MAKE) -f make_inquiry.mk objs
    $(cc) -o $(inquiry) $(obj)

$(synchronize): 
    $(MAKE) clean
    $(MAKE) -f make_sync.mk objs
    $(cc) -o $(synchronize) $(obj)

make_page.mk 中的详细信息

 cc = g++
    deps = $(shell ls  | grep .h)
    src = $(shell  ls | grep .cpp)
    obj = $(src:%.cpp=%.o) 

#%.o: %.c $(deps)
#   $(cc) -c  $  -DBUILD_TYPE=1 $@



CXXFLAGS += -DBUILD_TYPE=0

objs: $(obj)
    echo "Pagetimeout build complete"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2015-05-29
    • 1970-01-01
    • 2018-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多