使用 Cmake,如何防止库源包含在我的 IDE 中?
Posted
技术标签:
【中文标题】使用 Cmake,如何防止库源包含在我的 IDE 中?【英文标题】:Using Cmake, how do I prevent library sources from being included in my 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
命令一起使用并不能修复它。
解决这个问题的最佳方法是什么?我应该将我的库作为构建过程的一个完全独立的部分进行编译,而不是与我的可执行文件一起编译吗?
【问题讨论】:
使用 externalproject_add 构建外部项目。 cmake.org/cmake/help/v3.4/module/ExternalProject.html 【参考方案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 中的源代码,而且我的编译时间更快。
【讨论】:
以上是关于使用 Cmake,如何防止库源包含在我的 IDE 中?的主要内容,如果未能解决你的问题,请参考以下文章