2018年12月27日 星期四

The visual studio behavior with WinRT runtime component

When "windows runtime component" project created with winrt type.
1. VS default create Class.idl, Class.h, Class.cpp under root of project folder.
2. when project built, VS will generate some files in "Generated Files" folder.
    - Class.g.h
    - module.g.cpp
    - folder "winrt"
        - $project_name.h          // define template for Class
        - folder "impl"
            - $project_name.0.h    // define template for $project_name.1.h
            - $project_name.1.h    // define IClass for $project_name.2.h
            - $project_name.2.h    // define Class for $project_name.h
        - folder "source"
            - Class.h              // this file content is same as default created Class.h
            - Class.cpp            // this file content is same as default created Class.cpp

3. When change members in Class.idl and rebuild project.
3.1. files under root project folder.
    - Class.h                      // not re-generated.
    - Class.cpp                    // not re-generated.
3.2. files under "Generated Files" folder.
    - Class.g.h                    // re-generated, not content is not affected.
    - module.g.cpp                 // re-generated, not content is not affected.
    - files under "Generated Files/winrt" folder.
        - $project_name.h          // re-generated, add members.
        - files under "Generated Files/winrt/impl" folder.
            - $project_name.0.h    // re-generated, add members.
            - $project_name.1.h    // re-generated, not content is not affected.
            - $project_name.2.h    // re-generated, not content is not affected.
        - files under "Generated Files/winrt/source" folder.
            - Class.h              // re-generated, add members.
            - Class.cpp            // re-generated, add members.

4. When rename class name in Class.idl
4.1. files under root project folder.
    - Class.h                      // not re-generated.
    - Class.cpp                    // not re-generated.
4.2. files under "Generated Files" folder.
    - Class.g.h                    // not re-generated. just because new class file generated.
    - NewClass.g.h                 // new class file generated.
    - module.g.cpp                 // re-generated, content changed.
    - files under "Generated Files/winrt" folder.
        - $project_name.h          // re-generated, content changed to new class related.
        - files under "Generated Files/winrt/impl" folder.
            - $project_name.0.h    // re-generated, content changed to new class related.
            - $project_name.1.h    // re-generated, content changed to new class related.
            - $project_name.2.h    // re-generated, content changed to new class related.
        - files under "Generated Files/winrt/source" folder.
            - Class.h              // not re-generated. just because new class file generated.
            - Class.cpp            // not re-generated. just because new class file generated.
            - NewClass.h           // new class file generated.
            - NewClass.cpp         // new class file generated.

           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           

沒有留言:

張貼留言