DevEco Studio中Cmake编译选项的优先级说明
=============================

1.  常见的Cmake编译选项如下：
    *   Cmakelists.txt中通过CACHE FORCE设置的参数。
    *   Cmakelists.txt中缓存的变量。
    *   CmakeLists.txt中环境变量配置的缓存。
        
        #1、采用CACHE FORCE
        set(CMAKE\_BUILD\_TYPE debug CACHE STRING "Build type" FORCE)
        message(${CMAKE\_BUILD\_TYPE} "CMAKE\_BUILD\_TYPE\_FORCE")
        
        #2、缓存变量
        set(CMAKE\_BUILD\_TYPE debug CACHE STRING "Build type")
        message(${CMAKE\_BUILD\_TYPE} "CMAKE\_BUILD\_TYPE")
        
        #3、缓存环境变量
        set(CMAKE\_BUILD\_TYPE $ENV{CMAKE\_BUILD\_TYPE} CACHE STRING "Build type")
        message($ENV{CMAKE\_BUILD\_TYPE} "ENV\_CMAKE\_BUILD\_TYPE")
        
    *   CmakePresets.json或CMakeUsersPersets.json中配置的参数。
        
        {
            "version":3,
            "configurePresets":\[
                {
                    "name":"debug",
                    "displayName":"Build type",
                    "description":"Build type debug preset",
                    "cacheVariables":{
                        "CMAKE\_BUILD\_TYPE":"Debug"
                    }
                }
            \]
        }
        
2.  DevEco Studio自定义Cmake编译选项如下：
    *   模块级build-profile.json5中"externalNativeOptions"->"arguments"显式配置的参数。
        
            "externalNativeOptions": {
              "path": "./src/main/cpp/CMakeLists.txt",
              "arguments": "-DCMAKE\_BUILD\_TYPE=debug",
              "cppFlags": "",
              "cFlags": "",
              "abiFilters": \[
                "arm64-v8a",      
                "x86\_64"
              \]
            }
        
    *   hvigor默认配置的-DCMAKE\_BUILD\_TYPE参数。
        
        _//_ _"debuggable"缺省或为true，或者buildMode为debug_
        \-DCMAKE\_BUILD\_TYPE=debug
        _//_ _"debuggable"为false，或者buildMode为release_
        \-DCMAKE\_BUILD\_TYPE=release
        

用户可根据实际需求动态配置CMake变量，使参数生效，DevEco Studio中Cmake缓存变量的优先级顺序如下所示（从高到低）：

1.  Cmakelists.txt中通过CACHE FORCE设置的参数。
2.  模块级build-profile.json5中"externalNativeOptions"->"arguments"显式配置的参数。
3.  hvigor默认配置的-DCMAKE\_BUILD\_TYPE参数。
4.  CmakePresets.json或CMakeUsersPersets.json中配置的参数。
5.  Cmakelists.txt中缓存的变量及环境变量配置的缓存。