0
我有一个小型的图书馆,这是我站在一起,除了一个需要Imagemagick的类中的一个可选方法。所以我希望能够在机器没有安装Imagemagick的情况下不编译该方法;而不是简单地失败。唯一的问题是头文件仍然会定义该方法(虽然它没有被编译)。有没有办法使用Cmake或其他方法从头中删除该方法?Cmake安装标题没有一个特定的方法
我有一个小型的图书馆,这是我站在一起,除了一个需要Imagemagick的类中的一个可选方法。所以我希望能够在机器没有安装Imagemagick的情况下不编译该方法;而不是简单地失败。唯一的问题是头文件仍然会定义该方法(虽然它没有被编译)。有没有办法使用Cmake或其他方法从头中删除该方法?Cmake安装标题没有一个特定的方法
裹在预处理定义的定义:
#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可以一次性扩展整个文件的所有配置语句。
虽然这将工作建设图书馆,它不会删除标题中的声明。所以IDE仍然检测到该方法的存在,即使认为它已经被定义。目前,我只是简单地创建了一个异常,并在Imagemagick未编译时调用该异常。尽管输入正确:) –