【问题标题】:Using Cmake, how do I prevent library sources from being included in my IDE?使用 Cmake,如何防止库源包含在我的 IDE 中?
【发布时间】:2016-01-16 00:24:21
【问题描述】:

在我的项目中使用一堆不同的库(来自 GitHub 源,未预编译),我将它们添加到我的目标中,就像这样在我的根 CMakeLists.txt 文件中:

add_subdirectory(lib/glew-1.13.0/build/cmake)
include_directories(SYSTEM ${PROJECT_SOURCE_DIR}/lib/glew-1.13.0/include/)

...

target_link_libraries(MyApp glew ${GLEW_LIBRARIES} ... )

但是,您可以从下面的屏幕截图中看到,Xcode 在我的项目中包含了这些库的所有源代码,这使得我必须滚动浏览才能找到 my 代码的列表非常长。

我在add_subdirectory 命令中尝试了EXCLUDE_FROM_ALL 标志,该标志从我的Xcode 项目中删除了库源,但是我无法编译我的项目,因为Xcode 根本不编译库。

此外,Xcode 会从库中向我发出大量警告,而我并不真正关心这些警告。将SYSTEM 标志与include_directories 命令一起使用并不能修复它。

解决这个问题的最佳方法是什么?我应该将我的库作为构建过程的一个完全独立的部分进行编译,而不是与我的可执行文件一起编译吗?

【问题讨论】:

标签: c++ xcode compilation cmake


【解决方案1】:

我不确定它是如何工作的,但试试这个:

在您的根 CMakeLists.txt 中打开 USE_FOLDERS

set_property(GLOBAL PROPERTY USE_FOLDERS ON)

然后在添加完所有项目后,在所有第三方库上设置 FOLDER 目标属性:

set_property(TARGET target1 target2 ...
             PROPERTY FOLDER "ThirdPartyLibs")

【讨论】:

    【解决方案2】:

    由于不熟悉 C++,我认为我所有的库每次都应该与我的项目一起编译。我最终通过编写一个将我的所有库预编译为静态库的 shell 脚本解决了这个问题,现在我不必担心它们在我的 IDE 中的源代码,而且我的编译时间更快。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-29
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多