在询问之前我已经看过这个,试过但没有帮助: conditional compliation based on variable into makefile
就我而言,我的src_file.c
包含:
#ifndef WITH_ATS
#define WITH_ATS
#include "ats.h"
#endif
Makefile有:
ifdef WITH_ATS
INCLUDEDIR += -I../at2_build/include/
LDFLAGS += -L$(AT2) -lat2 -Wl,-rpath=$(AT2)
CFLAGS += -DWITH_ATS
endif
我正在尝试的是,如果我make WITH_ATS=1
文件应该使用编译的ats
lib进行编译,
而如果make WITH_ATS=0
编译应该没有ats
lib。
任何帮助将不胜感激。
答案 0 :(得分:2)
运行WITH_ATS
时变量make WITH_ATS=0
为not empty,因此makefile中的ifdef WITH_ATS
计算结果为true(即,不是您期望的那样)。
您实际需要检查WITH_ATS
是否等于1
。这可以通过ifeq
:
ifeq ($(WITH_ATS),1)
INCLUDEDIR += -I../at2_build/include/
LDFLAGS += -L$(AT2) -lat2 -Wl,-rpath=$(AT2)
CFLAGS += -DWITH_ATS
endif
在src_file.c
#ifndef
中,您既不需要#define
也不需要#ifdef WITH_ATS
#include "ats.h"
#endif
。你用这种方式实现的是include guard,这不是你想要的,你真正需要的是:
ats.h
也就是说,如果WITH_ATS
已定义,则包含WITH_ATS
。
请注意,在您的C源文件中,WITH_ATS
只是一个空宏(即,它没有任何关联的值),而在您的makefile中,0
是一个变量在命令行传递的值,例如make WITH_ATS=0
<?php
$ourCurrentPage = get_query_var('paged');
$newposts = new WP_Query(array(
'category_name' => 'stock-market-basics',
'orderby' => 'ID',
'order' => 'ASC',
'paged' => $ourCurrentPage
));
?>
<?php
if ($newposts->have_posts()):
while ($newposts->have_posts()):
$newposts->the_post();
?>
。
答案 1 :(得分:0)
使用if
代替ifdef
。
#if WITH_ATS
#include "ats.h"
#endif