CMake在Visual Studio下保持目錄結構


CMake在Visual Studio下保持目錄結構

原理

主要通過CMAKE自帶函數source_group來設定。
需要把add_executable()函數進行封裝,包裹一層source_group()的處理

例子

現有目錄結構

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)

執行編譯

cd hello
mkdir build
cd build
cmake .. -G "Visual Studio 14 Win64"
cmake --build .

打開hello/build/hello.sln看看,是不是好了!

Reference

https://stackoverflow.com/questions/31422680/how-to-set-visual-studio-filters-for-nested-sub-directory-using-cmake


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM