Skip to content

Releases: ChaseSunstrom/cforge

beta-v1.5.0

01 Apr 15:14
Compare
Choose a tag to compare
beta-v1.5.0 Pre-release
Pre-release

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

26 Mar 07:53
Compare
Choose a tag to compare
beta-v1.4.3 Pre-release
Pre-release

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

25 Mar 05:59
Compare
Choose a tag to compare
beta-v1.4.2 Pre-release
Pre-release

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

24 Mar 19:21
a931f52
Compare
Choose a tag to compare
beta-v1.4.0 Pre-release
Pre-release

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

24 Mar 16:28
a931f52
Compare
Choose a tag to compare
beta-v1.3.1 Pre-release
Pre-release

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 the generate_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

24 Mar 02:52
a931f52
Compare
Choose a tag to compare
beta-v1.3.0 Pre-release
Pre-release

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

22 Mar 16:37
a931f52
Compare
Choose a tag to compare
beta-v1.2.2 Pre-release
Pre-release

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 like GLEW::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

22 Mar 16:08
a931f52
Compare
Choose a tag to compare
beta-v1.2.1 Pre-release
Pre-release

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

21 Mar 07:35
a931f52
Compare
Choose a tag to compare
beta-v1.2.0 Pre-release
Pre-release

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

16 Mar 05:14
a931f52
Compare
Choose a tag to compare
beta-v1.1.0 Pre-release
Pre-release

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