2013-07-23 31 views
0

我有一个小型的图书馆,这是我站在一起,除了一个需要Imagemagick的类中的一个可选方法。所以我希望能够在机器没有安装Imagemagick的情况下不编译该方法;而不是简单地失败。唯一的问题是头文件仍然会定义该方法(虽然它没有被编译)。有没有办法使用Cmake或其他方法从头中删除该方法?Cmake安装标题没有一个特定的方法

回答

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可以一次性扩展整个文件的所有配置语句。

+0

虽然这将工作建设图书馆,它不会删除标题中的声明。所以IDE仍然检测到该方法的存在,即使认为它已经被定义。目前,我只是简单地创建了一个异常,并在Imagemagick未编译时调用该异常。尽管输入正确:) –

相关问题