Releases: ChaseSunstrom/cforge
beta-v1.5.0
CForge Release beta-v1.5.0
Build System and UI Improvements
CForge beta-v1.5.0 addresses key usability issues, focusing on improved configuration handling, more reliable progress feedback, and better error reporting.
Key Improvements
CMake Configuration Enhancements
- Fixed C++ Standard Setting: Properly generates CMake configuration for C/C++ language standards
- Improved Build Variant Support: Better handling of variant-specific settings in CMake generation
- Enhanced Multi-Config Support: More reliable handling of Debug/Release configurations
Progress Reporting System
- Redesigned Spinner Interface: More reliable progress indicators during builds
- Enhanced Status Updates: Clearer indication of current build operations
- Improved Error Visualization: Better formatting of compiler errors
Workspace Functionality
- Dependency Order Building: More reliable workspace builds respecting project dependencies
- Better Workspace Navigation: Enhanced tools for managing multi-project workspaces
- Improved Package Configuration: More robust package configuration for workspace projects
Technical Refinements
- Thread Safety Improvements: Fixed race conditions in progress display code
- Error Handling Enhancements: More detailed and better formatted error messages
- CMake Generation Improvements: More robust handling of paths and configurations
- Better Cross-Compilation Support: Enhanced platform-specific configurations
Detailed Improvements
- Fixed issue where C/C++ standard wasn't properly written to CMake configuration
- Improved spinner functionality with better cleanup and status handling
- Fixed potential deadlocks in progress reporting system
- Better handling of build paths with cross-compilation targets
- More reliable package configuration generation
Usage Examples
Generate CMake with proper C++ standard support:
cforge clean
cforge build
View detailed build progress with verbose output:
cforge build --verbosity verbose
Build a workspace with proper dependency ordering:
cforge build
Installation
Update to the latest version:
cargo install cforge@1.5.0-beta
Bug Fixes
- Fixed C/C++ standard not being correctly written to CMake files
- Resolved spinner visualization issues during long-running operations
- Fixed potential race conditions in progress reporting
- Improved error handling during build failures
- Enhanced path resolution for cross-compilation targets
Limitations
- Complex project configurations might still require manual CMake customization
- Some compiler-specific features may require additional configuration
beta-v1.4.3
CForge Release beta-v1.4.3
Packaging System Improvements
CForge beta-v1.4.3 addresses critical issues in the packaging system, focusing on reliability and cross-platform compatibility.
Key Improvements
Packaging System Enhancements
- Improved NSIS installer detection and installation on Windows
- Enhanced cross-platform package generation support
- Implemented fallback strategies for package generation
- More informative error messages during packaging
Build Configuration Support
- Better handling of Debug/Release configurations during packaging
- Improved support for package formats (ZIP, NSIS, DEB, RPM)
- Enhanced dependency detection mechanisms
Technical Refinements
- Resolved path resolution issues in package generation
- Improved CMake configuration for packaging
- Enhanced error capture and reporting
- More robust package type conversion and validation
Detailed Improvements
- Fixed inconsistent package naming across operating systems
- Improved handling of project metadata during package creation
- Enhanced compatibility with compiler and build system configurations
Usage Examples
Basic package generation:
cforge package
Specifying package type:
cforge package --type zip
Verbose package generation:
cforge package --verbosity verbose
Installation
Update to the latest version:
cargo install cforge@1.4.3-beta
Bug Fixes
- Resolved NSIS installer detection issues on Windows
- Fixed path resolution for package generation
- Improved error handling during package creation
- Enhanced cross-platform package generation support
Limitations
- Package generation may require platform-specific tools
- Some complex project configurations might need manual intervention
beta-v1.4.2
CForge Release beta-v1.4.2
Overview
CForge beta-v1.4.2 enhances the package command functionality and fixes critical issues with the build system. This release improves the packaging experience with better error handling, improved output formatting, and more reliable cross-platform operation.
Key Improvements
Package Command Enhancements
- Fixed Case Sensitivity: Resolved issue with package type case sensitivity for CPack generators
- Improved Output Handling: Better capture and formatting of CPack output for a cleaner experience
- Build Path Resolution: Fixed directory path resolution that was causing installation errors
- Progress Indication: Added progress bar and status updates during packaging
- Configuration Handling: Properly accounts for build configuration when packaging
Build System Improvements
- Build Directory Structure: Fixed path handling for configuration-specific build directories
- CMake Integration: Improved installation configuration for multi-configuration builds
- Error Reporting: Enhanced error reporting with more useful diagnostics
- Cross-Configuration Support: Better handling of build artifacts across different configurations
Technical Details
- Fixed CPack generator name handling to properly convert package types to uppercase
- Added proper capture of CPack stdout/stderr to prevent raw output flooding unless in verbose mode
- Resolved path resolution issues in CMake install rules that were preventing successful packaging
- Improved progress tracking during package generation for better user feedback
- Fixed build path resolution to properly include configuration type in directory path
Upgrading
This release is fully compatible with projects created using previous versions of CForge. Simply update to the latest version to benefit from the improved packaging functionality.
The package command now correctly handles case sensitivity issues and provides better output formatting:
cforge package
Specifying the output type:
cforge package --type zip
In verbose mode, you can see more detailed output:
cforge package --verbosity verbose
beta-v1.4.0
CForge Release beta-v1.4.0
Overview
CForge beta-v1.4.0 significantly improves Git dependency handling and fixes critical issues with the build system. This release enhances reliability when working with external libraries and provides more robust dependency resolution across platforms.
Key Improvements
Git Dependency Management
- Fixed error handling: Resolved issues where Git dependency cloning would fail silently
- Improved directory handling: Better detection and use of existing Git repositories
- Branch and tag support: Enhanced handling of specific branches, tags, and commit references
- CMake integration: Streamlined integration of Git-based dependencies into project builds
- Shallow clone support: Added proper support for shallow cloning to reduce download times
Build System Enhancements
- Build configuration: Fixed CMAKE_BUILD_TYPE propagation issues that were causing incorrect builds
- CMake generation: Improved CMake file generation for more reliable dependency management
- Path handling: Better path normalization for cross-platform compatibility
- Progress tracking: Enhanced progress reporting during dependency fetching
Dependency Resolution
- Include path handling: Automated detection of common include directories in dependencies
- Dependency caching: Improved caching to avoid unnecessary rebuilds
- Header-only libraries: Better support for header-only libraries from Git repositories
- Repository updates: Added control over when repositories should be updated
Technical Details
- Fixed path handling in
setup_git_dependencies()
to properly recognize existing repositories - Added proper error propagation for Git operations with improved status reporting
- Enhanced support for CMake options with Git-based dependencies
- Fixed an issue where Git dependencies were not properly included in generated CMakeLists.txt
Upgrading
This release is fully compatible with projects created using previous versions of CForge. Simply update to the latest version to benefit from the improved Git dependency handling. No changes to your cforge.toml files are required.
For best results with Git dependencies, consider specifying exact tags or commit hashes to ensure reproducible builds.
beta-v1.3.1
CForge Release v1.3.1
Overview
CForge beta-v1.3.1 addresses critical issues with precompiled header support and fixes several smaller bugs that were causing build failures in certain scenarios. This maintenance release improves reliability and compatibility across different build configurations.
Key Improvements
Precompiled Header Support
- Fixed
target_enable_pch
error: Resolved issue where the custom PCH function was referenced but not defined in generated CMakeLists.txt - Proper PCH function definition: Added missing function definition in CMake build files when PCH is enabled
- CMake compatibility: Improved PCH support across different CMake versions with proper fallbacks
Build System Enhancements
- PCH integration: Ensured proper sequence of PCH function definitions before they are referenced
- CMake generation: Improved CMake file generation logic for more reliable builds
- Build configuration: Better handling of compiler-specific PCH options and flags
Technical Details
- Fixed missing call to
add_pch_support()
in thegenerate_cmake_lists()
function - Ensured the PCH support function is properly defined in CMake before attempting to use it
- Improved compatibility with different compiler PCH implementations (MSVC, GCC, Clang)
- Added proper error handling and diagnostics for PCH-related build issues
Upgrading
This release is fully compatible with projects created using previous versions of CForge. Simply update to the latest version to benefit from the PCH fixes.
beta-v1.3.0
CForge Release beta-v1.3.0
Overview
CForge beta-v1.3.0 delivers significant improvements to build configuration management and compiler flag handling, resolving critical issues that were causing build failures across different configurations.
Key Improvements
Build Configuration Management
- Separate build directories per configuration: Each build configuration (Debug, Release, etc.) now uses its own dedicated build directory, eliminating cache conflicts
- Fixed Ninja generator cache issues: Resolved "could not load cache" errors when switching between Debug and Release configurations with the Ninja generator
- Consistent build path generation: Implemented consistent configuration-specific build path calculation (
build-debug
,build-release
) across all project types
Compiler Flags and Definitions
- Fixed configuration-specific preprocessor definitions: Ensured proper propagation of defines like DEBUG and NDEBUG to CMake
- Compiler flag management: Resolved issues with conflicting and improperly formatted compiler flags
- Build type awareness: Improved propagation of build type information throughout the entire build pipeline
- Cross-configuration compatibility: Fixed issues when building multiple configurations within the same project
Technical Details
- Each configuration now builds in an isolated directory (e.g.,
build-debug
,build-release
) to avoid cache conflicts - Fixed preprocessor definition formats to ensure proper usage in both MSVC-style and GCC/Clang style compilers
- Correctly set CMAKE_BUILD_TYPE when generating build files to ensure proper configuration selection
- Fixed target property propagation for configuration-specific compiler flags
- Improved build artifact discovery to correctly find executables built with specific configurations
This release fundamentally improves how CForge handles multiple build configurations, enabling developers to seamlessly work with both Debug and Release builds without configuration conflicts.
beta-v1.2.2
CForge Release beta-v1.2.2
Overview
CForge beta-v1.2.2 focuses on fixing critical CMake generation issues that were causing build failures, particularly with library dependencies and variable formatting. This maintenance release ensures smoother builds across different project configurations.
Bug Fixes
- Fixed CMake syntax errors: Resolved issues with double curly braces in variable references that caused syntax errors during CMake configuration
- Improved dependency handling: Added proper
find_package()
calls for vcpkg dependencies, particularly for namespaced targets likeGLEW::GLEW
- Fixed diagnostic message formatting: Corrected the format of diagnostic messages to avoid CMake parsing errors
- Enhanced vcpkg integration: Improved the integration with vcpkg to properly find and link against libraries with namespaced targets
Technical Details
- Fixed CMake variable syntax in generated CMakeLists.txt to use proper
${VARIABLE_NAME}
format instead of invalid${{VARIABLE_NAME}}
syntax - Added specialized handling for common libraries like GLEW, fmt, and glfw3 to ensure they're found with the appropriate
find_package()
modes - Ensured proper find_package calls are generated before any targets are defined that use these dependencies
- Fixed diagnostic message formatting to correctly display source files found during project configuration
Notes
This release resolves build failures that occurred when using external dependencies, especially those requiring specific CMake find modules. Users who experienced CMake configuration errors related to missing targets or syntax issues should update to this version.
beta-v1.2.1
CForge Release beta-v1.2.1
Overview
CForge beta-v1.2.1 introduces significant improvements to project configuration and build output naming. This release focuses on streamlining the development workflow and reducing dependency complexities.
New Features
- Simplified cforge.toml generation: Now only includes necessary configurations
- Improved executable naming: Build outputs now follow a clearer naming convention:
<project_name>_<target_name>.exe
Improvements
- Optional vcpkg integration: vcpkg is no longer included by default, eliminating unwanted automatic downloads
- Streamlined project configuration with focus on essential settings
Bug Fixes
- Fixed issues with cforge.toml containing excessive configuration options
- Resolved problems with hard-to-identify executable names in build output
- Fixed build error messages with the generated CMakeLists.txt
beta-v1.2.0
CForge Release beta-v1.2.0
Overview
CForge beta-v1.2.0 introduces better logging and error handling in the console. This release focuses on making it easier to fix errors in your C/C++ projects.
New Features
- Error specification: Errors will now show helpful tips and notes on how to fix them (similar to rust)
Improvements
- Removed unnecessary logging for different steps in the build process
- Removed excess error reporting and numerous error output for the same errors
Bug Fixes
- STDOUT> being shown when building with vcpkg
beta-v1.1.0
CForge Release beta-v1.1.0
Overview
CForge beta-v1.1.0 introduces progress bar loading and better icon logging in the console. This release focuses on making it easier to read the cforge output for your C/C++ projects across multiple platforms.
New Features
- Progress bar loading: Progress bar for different steps inside of the cforge build process
Improvements
- Improved console output and color coding
- Improved icons inside of different build steps
- Better color usage inside of console
- Removed unnecessary logging for different steps in the build process
Bug Fixes
- Removed hanging when building projects