Ykt*_*ula 3 c build-automation makefile build
依靠预处理器和预定义的编译器宏来实现可移植性似乎很难管理.什么是实现C项目可移植性的更好方法?我想将特定于环境的代码放在标题中,行为方式相同.有没有办法让构建环境选择要包含哪些标头?
我以为我会将特定于环境的标头放入特定环境的目录中.然后,构建环境只是将标头从平台的目录复制到根目录,构建项目,然后删除副本.
这当然完全取决于您的构建环境,与C本身无关.
您可以尝试的一件事是在makefile中设置包含路径:
INCDIRS=-I ./solaris
#INCDIRS=-I ./windows
#INCDIRS=-I ./linux
:
CC=gcc $(INCDIRS) ...
Run Code Online (Sandbox Code Playgroud)
并取消注释您正在处理的那个.然后将您的平台特定标头放在这些目录中:
./solaris/io.h
./windows/io.h
./linux/io.h
Run Code Online (Sandbox Code Playgroud)
你可以,在紧要关头,甚至可以拥有不同的平台makefile solaris.mk,windows.mk而不必编辑任何文件.
但是我没有看到你对预处理器的厌恶,这是它擅长的事情之一,人们几十年来一直在成功地做到这一点.最重要的是,当您的代码需要更改每个平台时会发生什么.您可以将代码抽象为头文件,但这#ifdef对我来说似乎比管理文件要困难得多.
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |