最近在学习《操作系统真象还原》,在学习的过程考虑到文件可能会过程中会写的文件比较多,想要使用cmake来配置最基本的编译方案,来减少后期过程中,手动编译带来的麻烦。
由于没有现成的例子,网上好多的版本都是汇编和c的混合编译,生成的代码都是基于平台相关的运行文件,这些只要全部交给c来处理就行了。
需求:编译nasm files
过程中踩了好多坑,留下记录备忘。
1 . cmake 和 nasm 对于头文件路径表示的冲突。
在cmake中include_directories()
函数是可以添加头文件路径的,并且是以不含 /
符号结束,例如~/include
。但是 nasm 严格要求 -I
参数添加的头文件路径是包含 反斜杠
这样就造成一种风格上的冲突,include_directories()
添加的路径在变成汇编编译参数的时候是不包含/
的,造成编译失败,最开始的地方显示找不到头文件。
解决方案:
add_compile_options(-I ${CMAKE_CURRENT_SOURCE_DIR}/include/ )
顾名思义:使用这个函数直接添加编译参数,在字符串中增加反斜杠,来避免冲突,虽然看着有点别扭,但是解决了问题。