通过CMAKE自带函数source_group可以实现在Visual Studio下生成目录结构
。
然而如果每个项目都这样手工一个个写岂不是很累,幸好发现一个现成脚本,不用自己重复发明轮子了。
看例子:
目录结构
hello/include/hello.hpp
hello/src/hello.cpp
hello/CMakeLists.txt
CMakeLists.txt
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)
OK,感谢脚本作者。