便携式方式包括malloc_np.h

时间:2014-05-22 20:26:16

标签: c cmake malloc portability freebsd

我使用的是包含malloc_np.h的第三方库。从我在互联网上找到的,这意味着代码应该在FreeBSD下编译,尽管只需将include更改为malloc.h使其在Linux下可编译(Ubuntu 13.10)。

现在我正在为这个库编写一个CMake脚本来生成适当的make文件(包括MSVC 2010的NMake makefile)。

在这种情况下实现可移植性的最佳方法是什么?

我目前的解决方案是测试:

${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD"
在CMake脚本中

。根据结果​​我发出

add_definitions (-DINCLUDE_MALLOC_H="#include <malloc[_np].h>")

命令并在源文件中使用此宏而不是#include <malloc_np.h>

这是一个好习惯吗?

1 个答案:

答案 0 :(得分:3)

生成时间

使用CheckIncludeFile*个模块:

include(CheckIncludeFileCXX)

check_include_file_cxx("malloc.h" have_malloc)

if(have_malloc)
  add_definitions(-DINCLUDE_MALLOC_H)
endif()

编译时间

使用boost.predef库检测操作系统特定功能