CMake Build System

  1. Advanced CMake Topics
    1. Generator Expressions
      1. Syntax and Evaluation
        1. Basic Syntax
          1. Evaluation Context
            1. Nesting Expressions
            2. Informational Expressions
              1. CONFIG Expression
                1. PLATFORM_ID Expression
                  1. C_COMPILER_ID Expression
                    1. CXX_COMPILER_ID Expression
                    2. Logical Expressions
                      1. BOOL Expression
                        1. AND Expression
                          1. OR Expression
                            1. NOT Expression
                            2. String Expressions
                              1. LOWER_CASE Expression
                                1. UPPER_CASE Expression
                                  1. MAKE_C_IDENTIFIER Expression
                                  2. Target Expressions
                                    1. TARGET_EXISTS Expression
                                      1. TARGET_FILE Expression
                                        1. TARGET_LINKER_FILE Expression
                                          1. TARGET_SONAME_FILE Expression
                                          2. Compile Language Expressions
                                            1. COMPILE_LANGUAGE Expression
                                              1. Language-Specific Logic
                                              2. Use Cases for Generator Expressions
                                                1. Conditional Compilation
                                                  1. Platform-Specific Settings
                                                    1. Configuration-Dependent Values
                                                  2. File System Operations
                                                    1. file Command Overview
                                                      1. Command Categories
                                                        1. File Path Handling
                                                        2. Reading and Writing Files
                                                          1. READ Operation
                                                            1. WRITE Operation
                                                              1. APPEND Operation
                                                                1. File Encoding Considerations
                                                                2. File Globbing
                                                                  1. GLOB Operation
                                                                    1. GLOB_RECURSE Operation
                                                                      1. Globbing Caveats
                                                                        1. CONFIGURE_DEPENDS Option
                                                                        2. File and Directory Operations
                                                                          1. COPY Operation
                                                                            1. INSTALL Operation
                                                                              1. REMOVE Operation
                                                                                1. REMOVE_RECURSE Operation
                                                                                  1. MAKE_DIRECTORY Operation
                                                                                    1. RENAME Operation
                                                                                    2. Path Manipulation
                                                                                      1. get_filename_component Command
                                                                                        1. RELATIVE_PATH Operation
                                                                                          1. REAL_PATH Operation
                                                                                            1. Path Normalization
                                                                                            2. File Properties
                                                                                              1. File Timestamps
                                                                                                1. File Permissions
                                                                                                  1. File Size Information
                                                                                                2. Custom Commands and Targets
                                                                                                  1. add_custom_command Command
                                                                                                    1. Output-Based Custom Commands
                                                                                                      1. Target-Based Custom Commands
                                                                                                        1. Command Syntax
                                                                                                          1. Dependencies and Ordering
                                                                                                          2. add_custom_target Command
                                                                                                            1. Creating Custom Targets
                                                                                                              1. Target Dependencies
                                                                                                                1. Build Integration
                                                                                                                2. Custom Command Properties
                                                                                                                  1. WORKING_DIRECTORY Property
                                                                                                                    1. COMMENT Property
                                                                                                                      1. VERBATIM Property
                                                                                                                      2. Use Cases
                                                                                                                        1. Code Generation
                                                                                                                          1. File Processing
                                                                                                                            1. External Tool Integration
                                                                                                                          2. Installing Projects
                                                                                                                            1. install Command Overview
                                                                                                                              1. Installation Components
                                                                                                                                1. Installation Destinations
                                                                                                                                2. Installing Targets
                                                                                                                                  1. TARGETS Mode
                                                                                                                                    1. Destination Specification
                                                                                                                                      1. Component-Based Installation
                                                                                                                                        1. Permissions
                                                                                                                                        2. Installing Files and Directories
                                                                                                                                          1. FILES Mode
                                                                                                                                            1. DIRECTORY Mode
                                                                                                                                              1. Pattern Matching
                                                                                                                                                1. File Permissions
                                                                                                                                                2. Installing Programs
                                                                                                                                                  1. PROGRAMS Mode
                                                                                                                                                    1. Executable Permissions
                                                                                                                                                    2. Export Installation
                                                                                                                                                      1. EXPORT Mode
                                                                                                                                                        1. Creating Export Files
                                                                                                                                                          1. Namespace Specification
                                                                                                                                                          2. Installation Paths
                                                                                                                                                            1. CMAKE_INSTALL_PREFIX Variable
                                                                                                                                                              1. GNUInstallDirs Module
                                                                                                                                                                1. Standard Installation Directories
                                                                                                                                                                2. Runtime Dependencies
                                                                                                                                                                  1. install(RUNTIME_DEPENDENCIES) Command
                                                                                                                                                                    1. Dependency Resolution
                                                                                                                                                                  2. Scripting with CMake
                                                                                                                                                                    1. Script Mode
                                                                                                                                                                      1. Running CMake in Script Mode
                                                                                                                                                                        1. Script vs. Project Mode
                                                                                                                                                                          1. Command-Line Arguments
                                                                                                                                                                          2. Script Variables
                                                                                                                                                                            1. CMAKE_ARGC Variable
                                                                                                                                                                              1. CMAKE_ARGV Variables
                                                                                                                                                                                1. CMAKE_CURRENT_LIST_FILE Variable
                                                                                                                                                                                2. Use Cases
                                                                                                                                                                                  1. File Manipulation Scripts
                                                                                                                                                                                    1. System Introspection
                                                                                                                                                                                      1. Build Automation
                                                                                                                                                                                        1. Deployment Scripts
                                                                                                                                                                                        2. Script Best Practices
                                                                                                                                                                                          1. Error Handling
                                                                                                                                                                                            1. Portability Considerations
                                                                                                                                                                                              1. Documentation