我正在尝试根据自己的需要调整第三人称代码。此代码随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
吗?
答案 0 :(得分:1)
您不能简单地#define USE_FTD2XX
,因为您还需要特定的链接器选项才能使其工作(即要链接的库)。如果cmake中的option
为OFF
,则Makefile
中不会出现特定链接选项,并且很可能会出现链接器错误。
因此,CMake会自动为您处理所有事情,但每次要打开/关闭选项时,您都需要重新生成makefile。
如果仅涉及标题并且没有要链接的库(比如Boost框架的某些部分),那么,在您的内容中定义USE_FTD2XX
就足够了。