skywind3000/emake

怎样实现条件编译?

Opened this issue · 5 comments

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

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

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

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

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

还可以在:

~/.config/emake 

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

编译的时候:

emake --cfg=abc   ....

即可。

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

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

ini 文件是用于配置不同工具链,而 .mak 是工程文件,两个正交,工具链配置一次即可。