<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Cmake on ISciNumPy.dev</title>
    <link>https://iscinumpy.dev/tags/cmake/</link>
    <description>Recent content in Cmake on ISciNumPy.dev</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <managingEditor>henryfs@princeton.edu (Henry Schreiner)</managingEditor>
    <webMaster>henryfs@princeton.edu (Henry Schreiner)</webMaster>
    <lastBuildDate>Mon, 05 Aug 2024 23:09:13 -0400</lastBuildDate>
    <atom:link href="https://iscinumpy.dev/tags/cmake/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>scikit-build-core 0.10</title>
      <link>https://iscinumpy.dev/post/scikit-build-core-0-10/</link>
      <pubDate>Mon, 05 Aug 2024 23:09:13 -0400</pubDate><author>henryfs@princeton.edu (Henry Schreiner)</author>
      <guid>https://iscinumpy.dev/post/scikit-build-core-0-10/</guid>
      <description>&lt;p&gt;Scikit-build-core 0.10 is out, and it is one of the largest releases we&amp;rsquo;ve&#xA;produced in terms of new configuration options. It automatically reads your&#xA;minimum CMake version, you can tell it to read your scikit-build-core&#xA;minimum-version, and there are settings for many of the advanced things users&#xA;used to do with scikit-build (classic), like rebuilds or pure Python fallbacks&#xA;on build failures.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Scikit Build Proposal</title>
      <link>https://iscinumpy.dev/post/scikit-build-proposal/</link>
      <pubDate>Wed, 27 Oct 2021 08:00:00 -0400</pubDate><author>henryfs@princeton.edu (Henry Schreiner)</author>
      <guid>https://iscinumpy.dev/post/scikit-build-proposal/</guid>
      <description>&lt;p&gt;I&amp;rsquo;ve spent the last few years trying to make it easy for anyone to extend Python&#xA;with compiled languages. I&amp;rsquo;ve worked on &lt;a href=&#34;https://github.com/pybind/pybind11&#34;&gt;pybind11&lt;/a&gt;, a powerful C++ library&#xA;that allows users to write advanced Python extensions using just C++11, used by&#xA;some of the largest projects, SciPy, PyTorch, Google, LLVM, and tens of&#xA;thousands of other libraries, down to very small extensions. I also work on&#xA;&lt;a href=&#34;https://github.com/pypa/cibuildwheel&#34;&gt;cibuildwheel&lt;/a&gt;, which makes building binaries (called wheels) on continuous&#xA;integration (CI) simple. It is again powerful enough to used by huge projects,&#xA;like Scikit-learn, matplotlib, mypy; and is simple enough to be used by hundreds&#xA;of other packages. Recently it was accepted into the Python Packaging Authority&#xA;(PyPA). There is one missing piece, though, to complete this picture of compiled&#xA;extensions that easy to use for small projects, and powerful enough for large&#xA;projects: the build system. I believe the solution to that is &lt;a href=&#34;https://github.com/scikit-build/scikit-build&#34;&gt;scikit-build&lt;/a&gt;,&#xA;and I&amp;rsquo;d like to work on it over the next three years.&lt;/p&gt;&#xA;&lt;p&gt;Scikit-build is a tool for integrating a package with a CMake build system into&#xA;Python. You can utilize the vast collection of packages and projects using CMake&#xA;already, and you have access to modern building features, like multithreaded&#xA;builds, library discovery, superb compiler and IDE support, and all sorts of&#xA;extended tooling. Modern CMake is quite pleasant to write compared to times&#xA;past; I have written &lt;a href=&#34;https://cliutils.gitlab.io/modern-cmake/&#34;&gt;a book&lt;/a&gt; and &lt;a href=&#34;https://hsf-training.github.io/hsf-training-cmake-webpage&#34;&gt;training course&lt;/a&gt; on it. We&#xA;ship up-to-date &lt;code&gt;cmake&lt;/code&gt; and &lt;code&gt;ninja&lt;/code&gt; wheels for all binary platforms.&lt;/p&gt;&#xA;&lt;p&gt;Update: Funded! I&amp;rsquo;ll be working on this starting August 1, 2022!&lt;/p&gt;&#xA;&lt;p&gt;I wrote a proposal for an NSF CSSI Elements project containing three parts. The&#xA;first part will cover core development on Scikit-build to address the current&#xA;shortcomings and to prepare it for a post-distutils (Python 3.12+) world. The&#xA;second part would cover assisting libraries with a science use case in either&#xA;transitioning to scikit-build (ideally from an existing CMake build system with&#xA;Python bindings, but I can help mentor developers in writing bindings (ideally&#xA;pybind11), setting up CI, and writing CMake code as well (see my book or&#xA;workshop on Modern CMake, and I&amp;rsquo;m happy to help old scikit-build projects&#xA;transition to better practices). As part of this, I would be building up the&#xA;examples and documentation, leading into the third part of the proposal: A&#xA;series of training events and training material, including plans for something&#xA;alongside SciPy.&lt;/p&gt;&#xA;&lt;p&gt;You can also see an outline at&#xA;&lt;a href=&#34;https://github.com/scikit-build/scikit-build/wiki&#34;&gt;scikit-build/scikit-build/wiki&lt;/a&gt;&#xA;or at the end of this post.&lt;/p&gt;&#xA;&lt;p&gt;Thank you for all the projects! The proposal was submitted Dec 8, 2021; mid year&#xA;we should find out if it was accepted!&lt;/p&gt;</description>
    </item>
    <item>
      <title>CMake 3.11</title>
      <link>https://iscinumpy.dev/post/cmake-311/</link>
      <pubDate>Mon, 02 Apr 2018 11:16:57 +0200</pubDate><author>henryfs@princeton.edu (Henry Schreiner)</author>
      <guid>https://iscinumpy.dev/post/cmake-311/</guid>
      <description>&lt;p&gt;CMake 3.11 was just released; this is particularly exciting release for CMake.&#xA;I&amp;rsquo;d like to give a quick and friendly introduction to the new features that&#xA;might make the largest difference for CMake users.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Announcing GooFit 2.1</title>
      <link>https://iscinumpy.dev/post/announcing-goofit-21/</link>
      <pubDate>Thu, 07 Dec 2017 03:20:00 -0500</pubDate><author>henryfs@princeton.edu (Henry Schreiner)</author>
      <guid>https://iscinumpy.dev/post/announcing-goofit-21/</guid>
      <description>&lt;p&gt;&lt;img src=&#34;https://iscinumpy.dev/images/post/2017/GooFitLogo21small.png&#34; alt=&#34;GooFit logo&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;GooFit 2.1 introduces the full-featured Python bindings to GooFit. These&#xA;bindings mimic the C++ usage of GooFit, including bindings for all PDFs, and&#xA;also provide NumPy-centric conversions, live Jupyter notebook printing, pip&#xA;install, and more. Most of the examples in C++ are provided in Python form, as&#xA;well.&lt;/p&gt;&#xA;&lt;p&gt;Several other API changes were made. Observables are now distinguished from&#xA;Variables and provided as a separate class. Both these classes are now passed&#xA;around by copy everywhere.&lt;sup id=&#34;fnref:1&#34;&gt;&lt;a href=&#34;#fn:1&#34; class=&#34;footnote-ref&#34; role=&#34;doc-noteref&#34;&gt;1&lt;/a&gt;&lt;/sup&gt; The three and four body amplitude classes have&#xA;been refactored and simplified. OpenMP is now supported via homebrew on macOS;&#xA;GooFit is one of the only packages that currently can build with OpenMP on the&#xA;default macOS compiler. Eigen is now available, and &lt;a href=&#34;https://github.com/CLIUtils/CLI11&#34;&gt;CLI11&lt;/a&gt; has been updated to&#xA;version 1.3.&lt;/p&gt;&#xA;&lt;p&gt;GooFit 2.1 will receive continuing support while development on GooFit 2.2&#xA;presses on with a new indexing scheme for PDFs.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Announcing GooFit 2.0</title>
      <link>https://iscinumpy.dev/post/announcing-goofit-20/</link>
      <pubDate>Thu, 08 Jun 2017 17:54:00 -0700</pubDate><author>henryfs@princeton.edu (Henry Schreiner)</author>
      <guid>https://iscinumpy.dev/post/announcing-goofit-20/</guid>
      <description>&lt;p&gt;The next version of the premier CUDA/OpenMP fitting program for HEP analysis,&#xA;GooFit 2.0, &lt;a href=&#34;GooFit&#34;&gt;has been released&lt;/a&gt;. GooFit is now easy to build on a wide&#xA;variety of Unix systems, and supports debuggers and IDEs. GooFit is faster, has&#xA;unit tests, and working examples. More PDFs and examples have been added, as&#xA;well as newly released example datasets that are downloaded automatically.&#xA;GooFit now has built in support for MPI, and can use that to deploy to multiple&#xA;graphics cards on the same machine. A new command line parser (&lt;a href=&#34;https://github.com/CLIUtils/CLI11&#34;&gt;CLI11&lt;/a&gt;) and&#xA;drastically improved logging and errors have made code easier to write and&#xA;debug. Usage of GooFit specific terminology is now reduced, using standard&#xA;Thrust or CUDA terms when possible, lowering the barrier for new developers. A&#xA;new Python script has been added to assist users converting from pre 2.0 code.&lt;/p&gt;&#xA;&lt;p&gt;The file structure of GooFit and the build system have been completely revamped.&#xA;The fake &lt;code&gt;nvcc&lt;/code&gt; features have been removed, as have the &lt;code&gt;rootstuff&lt;/code&gt; copies of&#xA;ROOT classes. PDFs are now organized by type and compile and link separately.&#xA;Multiple PDF caching support has improved. The build system now uses CMake and&#xA;manages external libraries.&lt;/p&gt;&#xA;&lt;p&gt;A new feature of the CMake build system is GooFit Packages, which are complete&#xA;packages that can be added to GooFit and built, allowing analysis code to live&#xA;in a separate location from GooFit, rather than the old method of simply forking&#xA;GooFit and adding your analysis manually. A GooFit Package can be made into an&#xA;example trivially. See &lt;a href=&#34;https://github.com/maddocbf/goofit_KKPiPi&#34;&gt;this package&lt;/a&gt;&#xA;for an example.&lt;/p&gt;&#xA;&lt;p&gt;GooFit 2.0 will receive continuing support while development on GooFit 2.1&#xA;presses on.&lt;/p&gt;&#xA;&lt;h4 id=&#34;links&#34;&gt;Links:&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://github.com/GooFit/GooFit&#34;&gt;GooFit on GitHub&lt;/a&gt; • &lt;a href=&#34;https://GooFit.github.io&#34;&gt;GooFit webpage&lt;/a&gt; • &lt;a href=&#34;https://GooFit.github.io/GooFit&#34;&gt;API documentation&lt;/a&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>GoogleTest and CMake</title>
      <link>https://iscinumpy.dev/post/googletest-and-cmake/</link>
      <pubDate>Fri, 25 Mar 2016 16:12:00 -0700</pubDate><author>henryfs@princeton.edu (Henry Schreiner)</author>
      <guid>https://iscinumpy.dev/post/googletest-and-cmake/</guid>
      <description>&lt;p&gt;This is a quick recipe for setting up CMake to use googletest in your projects.&#xA;First, make a &lt;code&gt;tests&lt;/code&gt; folder in the root of your project. Then, add&#xA;&lt;code&gt;add_subdirectory(tests)&lt;/code&gt; to your &lt;code&gt;CMakeLists.txt&lt;/code&gt;, after you&amp;rsquo;ve finished adding&#xA;the libraries in your project. Note that the way I&amp;rsquo;ve written this probably&#xA;requires CMake 3.4+.&lt;/p&gt;</description>
    </item>
    <item>
      <title>GTest Submodule</title>
      <link>https://iscinumpy.dev/post/gtest-submodule/</link>
      <pubDate>Wed, 07 Oct 2015 06:43:00 -0700</pubDate><author>henryfs@princeton.edu (Henry Schreiner)</author>
      <guid>https://iscinumpy.dev/post/gtest-submodule/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Note: There is a better way to do this described&#xA;&lt;a href=&#34;https://iscinumpy.dev/post/googletest-and-cmake&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;If you&amp;rsquo;ve ever tried &lt;code&gt;apt-get&lt;/code&gt; or &lt;code&gt;brew&lt;/code&gt; to try to install gtest, you are&#xA;probably familiar with the fact that gtest is not &amp;ldquo;recommend&amp;rdquo; for global install&#xA;on your system. As an alternative, the recommendation is that you make it part&#xA;of your project. The process for making gtest part of your project, however, is&#xA;not well documented, at least for modern git projects. What follows is the&#xA;procedure I used to do so.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
