lor*_*ara 2 c bash macros gcc c-preprocessor
我正在尝试编写一个bash脚本,它将接受一个可选参数,并根据该参数的值,使用该参数作为预处理器指令编译代码.到目前为止这是我的文件:
#!/bin/bash
OPTIMIZE="$1"
if[ $OPTIMIZE = "OPTIMIZE" ] then
echo "Compiling optimized algorithm..."
gcc -c -std=c99 -O2 code.c -D $OPTIMIZE
else
echo "Compiling naive algorithm..."
gcc -c -std=c99 -O2 code.c
fi
Run Code Online (Sandbox Code Playgroud)
但是,它似乎不喜欢"-D"选项,抱怨在-D之后缺少宏名称.我的印象是-D定义了一个新的宏(为1),其名称为指定的内容.我希望"OPTIMIZE"成为该宏的名称.任何提示?
该-D
用胶水粘贴名称(即-DFOO
不-D FOO
)
gcc -c -std=c99 -Wall "-D$OPTIMIZE" -O2 code.c
Run Code Online (Sandbox Code Playgroud)
而你忘了传递-Wall
给gcc
.它几乎总是有用的.
顺便说一下,您可以考虑(甚至是单个文件)使用make
两个虚假目标:默认目标(例如plain
)和optimized
一个.