CMake在Visual Studio下生成目录结构

CMake在Visual Studio下生成目录结构

通过CMAKE自带函数source_group可以实现在Visual Studio下生成目录结构。
然而如果每个项目都这样手工一个个写岂不是很累,幸好发现一个现成脚本,不用自己重复发明轮子了。

例子:

  • 目录结构
1
2
3
4
hello/include/hello.hpp
hello/src/hello.cpp
hello/CMakeLists.txt

  • CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
cmake_minimum_required(VERSION 3.1)

project(hello)

function(assign_source_group)
foreach(_source IN ITEMS ${ARGN})
if (IS_ABSOLUTE "${_source}")
file(RELATIVE_PATH _source_rel "${CMAKE_CURRENT_SOURCE_DIR}" "${_source}")
else()
set(_source_rel "${_source}")
endif()
get_filename_component(_source_path "${_source_rel}" PATH)
string(REPLACE "/" "\\" _source_path_msvc "${_source_path}")
source_group("${_source_path_msvc}" FILES "${_source}")
endforeach()
endfunction(assign_source_group)

function(my_add_executable)
foreach(_source IN ITEMS ${ARGN})
assign_source_group(${_source})
endforeach()
add_executable(${ARGV})
endfunction(my_add_executable)

my_add_executable(hello include/hello.hpp src/hello.cpp)