0

我有一个我制作的小型库,除了需要 Imagemagick 的类中的一个可选方法外。因此,如果机器没有安装 Imagemagick,我希望不编译该方法;而不是简单地失败。唯一的问题是头文件仍然定义了该方法(尽管它没有被编译)。有没有办法使用 Cmake 或其他方法从标头中删除该方法?

4

1 回答 1

1

将定义包装在预处理器定义中:

#ifdef HAVE_IMAGEMAGICK
  void myFunctionDefinition(void);
#endif

然后,在 CMake 中,如果找到 ImageMagick,则将定义添加到项目中。CMake 会将该定义传递给编译器的命令行,编译器将定义预处理器令牌。

IF(IMAGEMAGICK_FOUND)  # or whatever CMake variable holds this info
    ADD_DEFINITIONS(-DHAVE_IMAGEMAGICK)
ENDIF()

或者,如果您有许多这样的定义,您可以考虑使用包含文件来保存所有这些配置。然后,CMake 命令 CONFIGURE_FILE 可以一次展开整个文件的配置语句。

于 2013-07-23T17:22:38.797 回答