Ser*_*e C 2 c linux windows makefile embedded-linux
应该为Windows,Linux和嵌入式目标编译一个项目.在主机或嵌入式目标上运行时,应用程序具有行为差异.总结我的要求,这是表:
Target Compiler Behavior
Windows MSVC, gcc A
Host Linux gcc A
Embedded Linux cross pltf gcc B
Run Code Online (Sandbox Code Playgroud)
我希望创建一个自动识别编译器和环境差异的Makefile(无需手动传递参数/定义).是否可以通过在C源文件级别使用条件编译来解决此类问题?
到目前为止我还没有使用automake.
该自动工具被提出来解决这个问题.Makefile本身不能这样做.
至于条件编译,这些编译器定义了几个可用的宏(例如,_MSC_VER
对于MSVC++,_WIN32
对于Windows和__linux__
对于Linux).此外,gcc提供了处理不同CPU目标的断言.
Target Compiler Conditional
Windows MSVC++ #ifdef _MSC_VER
Windows gcc #if defined(_WIN32) && defined(__GNUC__)
Linux gcc #if defined(__linux__) && defined(__GNUC__)
Platform (x86) gcc #if #cpu(i386)
Platform (arm) gcc #if #cpu(arm)
Run Code Online (Sandbox Code Playgroud)
这应该足以满足您的目的.