CDZ*_*CDZ 2 c++ visual-studio visual-studio-2017
我有一个cmake文件,该文件可以生成包含多个子项目的解决方案,但我希望有一个“过滤器”(VS特定功能)将所有第三方库组合在一起。
一个例子,现在我使用ZLIB库,它作为一个项目出现,我使用以下代码:
add_subdirectory(zlib)
Run Code Online (Sandbox Code Playgroud)
要添加这样的过滤器,我可以尝试以下方法:
add_subdirectory(zlib)
FILE(GLOB_RECURSE ZLIB_SOURCE "zlib/*")
SOURCE_GROUP("THIRDPARTY" FILES ${ZLIB_SOURCE})
Run Code Online (Sandbox Code Playgroud)
在此示例中,我希望将“ zlib”项目放入“ THIRDPARTY”过滤器中。
但是我的解决方案没有任何改变!我使用VS2017和cmake 3.8
任何的想法 ?
在解决方案资源管理器中,有两种方法可以分离您自己的应用程序代码和第三方代码。
分离多个项目,并将它们放入顶层文件夹中。
请执行下列操作:
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)
| 归档时间: |
|
| 查看次数: |
878 次 |
| 最近记录: |