Skip to content

NYC++: December 2023 at Adobe ft., Bill Hoffman

Photo of Daniel Katz
Hosted By
Daniel K.
NYC++: December 2023 at Adobe ft., Bill Hoffman

Details

Come to our December 2023 meetup! Adobe will be welcoming us back into their offices, with food provided by NYC++.

Please fill out this form before RSVPing. Registrants who have not filled out the form will not be able to attend and will removed from the RSVP list in the days leading up to the event.

Featured Speaker: Bill Hoffman
Talk Title: import CMake; the Experiment is Over!

Description
Since February 2019 when modules were applied to the C++20 working draft in Kona, the CMake team has been working to support modules in CMake. The decade long experience with Fortran modules provided a roadmap for handling modules in the build system. The main issue is that binary module interface files (BMIs) must exist before they can be imported. Since a BMI is not created until a translation unit (TU) is compiled, this puts a restriction on the ordering of the compilation TUs. It requires the build system to have the ability to know for each TU which modules are produced and what modules are consumed. This of course requires a C++ parser to accurately discover this information. Since C++ parsing is significantly more complicated than Fortran, mimicking the minimal Fortran parser built into CMake with a C++ version was not a tractable solution.

The CMake team has worked with SG15 and compiler vendors to establish a standard format for C++ compilers to communicate this information to the build system in the p1689 paper. The idea is for compilers to provide a pre-scan option that will quickly determine the production and consumption of modules for each TU before it is compiled. This has been implemented and released in Visual Studio (VS), Clang, and gcc. With three major compilers implementing p1689, the experimental status of named module support in CMake was moved out of experimental status.

This talk will be a "state of the union" talk on C++ modules and the build system. It will cover the implementation of CMake module scanning and collation of the depend information. In addition, the CMake language API for working with modules in CMake projects will be described. Both the exporting and importing of libraries containing modules from CMake will be discussed. Additional CMake features around module such as the creation of module_config.json files and the discovery of built modules not created by CMake will be covered. CMake's approach to static checkers such as Include What you Use, Clang Tidy, CppLint and others and how it is friendly to the approach taken with modules will be discussed.

Attendees will come away with the concepts required to try C++20 modules in projects built with CMake. In addition, challenges, performance implications, and issues with header modules will be covered. In short, all things C++ 20 modules and CMake will be covered.

Speaker Bio
Mr. Hoffman is a founder of Kitware and currently serves as Chairman of the Board, Vice President, and Chief Technical Officer (CTO). He is the original author and la ead architect of CMake, an open source, cross-platform build and configuration tool that is used by millions of developers around the world, and he is the co-author of the accompanying text, Mastering CMake. Using his 20+ years of experience with large software systems development, Mr. Hoffman is also a major technical contributor to Kitware’s Visualization Toolkit, Insight Toolkit, and ParaView projects.

As CTO, Mr. Hoffman’s emphasis is on software development methodologies and establishing best practices across the breadth of Kitware’s development efforts. As one of the visionaries leading the quality software process efforts at Kitware, Bill has been instrumental in adopting agile programming practices, fueling Kitware’s software development. He is a frequent speaker on these subjects at CppCon, C++Now, and other conferences.

Mr. Hoffman received a B.S. in Computer Science from the University of Central Florida and an M.S. in Computer Science from Rensselaer Polytechnic Institute (RPI). Prior to the formation of Kitware, he spent nine years at the General Electric Corporate Research and Development center, working in the Computer Vision Group. He has planned and taught several graduate-level courses at RPI as well as a course in object-oriented programming at New York University.

Photo of NYC++ Meetup group
NYC++ Meetup
See more events
1540 Broadway
1540 Broadway · New York, NY