skywind3000 / emake

你见过的最简单的 GCC/CLANG 项目构建工具,定义式构建,比命令式更简单
GNU General Public License v2.0
684 stars 111 forks source link

怎样实现条件编译? #18

Open WayneY opened 1 year ago

WayneY commented 1 year ago

比如那些 -DXXXXX 的条件,在CMake以及别的很多make中,可以通过这样的条件选项使用不同的头文件啊源码文件啊以及不同的库和选项。从emake的readme看,和这种比较类似的是name? 那么这个怎么使用呢?在不写ini的情况下。

skywind3000 commented 1 year ago

可以支持的,加斜杠即可,比如:

iossim/flag: -arch i386, -stdlib=libstdc++, -DAUDIO_STATIC_BUILD, -mfloat-abi=softfp
iossim2/flag: -arch x86_64, -stdlib=libstdc++, -DAUDIO_STATIC_BUILD, -mfloat-abi=softfp
iosarm/flag: -arch armv7, -stdlib=libstdc++, -DAUDIO_STATIC_BUILD, -mfloat-abi=softfp
iosarmv7s/flag: -arch armv7s, -stdlib=libstdc++, -DAUDIO_STATIC_BUILD, -mfloat-abi=softfp
iosarm64/flag: -arch arm64, -stdlib=libstdc++, -DAUDIO_STATIC_BUILD, -mfloat-abi=softfp
android/flag: -mfloat-abi=softfp

src: ../service/cJSON.c
src: ../service/JsonCpp.cpp
src: ../service/NetTools.cpp
src: ../service/HttpReport.cpp
win32/src: ../service/DeviceListenerWin.cpp
WayneY commented 1 year ago

加斜杠这个就是readme里说的name吧,但是怎么调用呢?比如要用 win32/src 那段,而这些配置都在 proj.mak 里, 那么是 emake proj.mak -Dwin32 吗? 我试了下好像并不行啊……

skywind3000 commented 1 year ago

这个写在 ini 文件里面,你建立一个 emake.ini 放到 emake 同级目录即可

还可以在:

~/.config/emake 

目录下面建立多个 ini 文件,比如 abc.ini

编译的时候:

emake --cfg=abc   ....

即可。

WayneY commented 1 year ago

额,这样的话,相当于就是说需要一个 proj.mak 文件,一个 emake.ini 文件,然后再需要在命令行中指定, 并且ini文件用等号,mak文件用冒号…… 总觉得这部分不是特别方便。 readme里的 ini 都是比较通用的工具链,这么设置很合理,而一个具体工程里的那些条件,基本只用这么一次,这样在编译脚本外再搞一个就有点多了…… 并且不论是emake的同级目录还是~/.config/emake, 都是较为全局的设置,而不是单个项目的设置

Anyway, 非常感谢耐心的解答!