0

我正在尝试根据我的需要调整第三人称代码。此代码随用于构建和安装它的 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(代码块)中分析和运行它,我如何在 C++ 代码中而不是在 CMake 中设置使用这个库?我也确定我想一直使用这个,以便修复它。

我应该简单地#define USE_FTD2XX放在主文件中吗?

4

1 回答 1

1

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

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

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

于 2012-11-07T11:43:18.250 回答