如何避免库查找CMakeLists功能

时间:2012-11-07 11:05:38

标签: c cmake ftdi

我正在尝试根据自己的需要调整第三人称代码。此代码随CMake配置文件一起提供,用于构建和安装它。有可能选择一个图书馆。并且在代码中经常使用#ifdef USE_FTD2XX指令。我看到这是在CMamkeFiles.txt文件中定义的,如下所示:

option(USE_FTD2XX "Use FTDI libFTD2XX instead of free libftdi" ON)

if(USE_FTD2XX)
  find_package(libFTD2XX)
endif(USE_FTD2XX)

if(LIBFTD2XX_FOUND)
  include_directories(${LIBFTD2XX_INCLUDE_DIR})
  add_definitions( -DUSE_FTD2XX )
else(LIBFTD2XX_FOUND)
  set(LIBFTD2XX_LIBRARIES "")
endif(LIBFTD2XX_FOUND)

但是,如果我只使用* .c和* .cpp文件并且我只是从IDE(Codeblocks)分析并运行它,我怎样才能在C ++代码中而不是在CMake中使用这个库?我也确定我总是想要使用这个,所以它可以修复。

我应该只在主文件中#define USE_FTD2XX吗?

1 个答案:

答案 0 :(得分:1)

您不能简单地#define USE_FTD2XX,因为您还需要特定的链接器选项才能使其工作(即要链接的库)。如果cmake中的optionOFF,则Makefile中不会出现特定链接选项,并且很可能会出现链接器错误。

因此,CMake会自动为您处理所有事情,但每次要打开/关闭选项时,您都需要重新生成makefile。

如果仅涉及标题并且没有要链接的库(比如Boost框架的某些部分),那么,在您的内容中定义USE_FTD2XX就足够了。