我有一个cmake文件可以生成一个包含多个子项目的解决方案,但我希望有一个"过滤器" (VS特定功能)将我的所有第三方库组合在一起。
一个例子,现在我使用ZLIB库,它看起来像一个项目,我使用以下内容:
add_subdirectory(zlib)
要添加此类过滤器,我尝试以下操作:
add_subdirectory(zlib)
FILE(GLOB_RECURSE ZLIB_SOURCE "zlib/*")
SOURCE_GROUP("THIRDPARTY" FILES ${ZLIB_SOURCE})
在这个例子中,我希望将" zlib"投射到" THIRDPARTY"过滤
但我的解决方案没有任何改变!我使用VS2017和cmake 3.8
有什么想法吗?
答案 0 :(得分:3)
在解决方案资源管理器中,有两种方法可以分离应用程序的所有自己的代码和第三方代码。
分隔多个项目并将它们放入顶层的文件夹中
执行以下操作:
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
在定义目标后添加此额外位
add_executable(MyLib .....)
set_target_properties(MyLib
PROPERTIES
FOLDER "Libraries");
您的项目资源管理器将如下所示:
这些家伙可以归功于:http://cmake.3232098.n2.nabble.com/Solution-folders-td6043529.html
要分离项目中的多个源文件,您可以执行以下操作:
set(VARIABLE_NAME src/module/fileName1.cpp
src/module/fileName2.cpp)
source_group("Source Files\\module" FILES ${VARIABLE_NAME})
set(SOURCE_FILES "${VARIABLE_NAME}")
add_executable(projectName "${SOURCE_FILES}")
上述内容适用于CMake 3.6和Visual Studio 2015,因此它也适用于VS2017和Cmake 3.8。
当完成项目的所有文件时,它看起来像这样:
既然你正在开发VS,我认为另一个暗示是非常有用的:
您可以通过以下命令定义VS的启动项目。这样,在用CMake重建项目后,你不必改变VS中的任何东西
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ProjectName)