在我的项目中使用了一堆不同的库(来自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 代码的列表非常长。
我在EXCLUDE_FROM_ALL
命令中尝试了add_subdirectory
标志,它从我的Xcode项目中删除了库源,但后来我无法编译我的项目,因为Xcode根本没有编译库。
此外,Xcode给了我很多来自我并不真正关心的图书馆的警告。将SYSTEM
标志与include_directories
命令一起使用并不能解决问题。
解决这个问题的最佳方法是什么?我应该将我的库编译为构建过程的一个完全独立的部分,而不是用我的可执行文件编译它们吗?
答案 0 :(得分:1)
我不确定它是如何工作的,但试试这个:
启用根CMakeLists.txt中的USE_FOLDERS
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
然后在添加完所有项目后,在所有第三方库上设置FOLDER目标属性:
set_property(TARGET target1 target2 ...
PROPERTY FOLDER "ThirdPartyLibs")
答案 1 :(得分:0)
由于不熟悉C ++,我认为我的所有库都应该每次都与我的项目一起编译。我最后通过编写一个shell脚本来解决这个问题,该脚本将我的所有库预先编译为静态库,现在我不必担心我的IDE中的源代码,加上编译时间更快。