Closed eseiler closed 1 month ago
Documentation preview available at https://docs.seqan.de/preview/seqan/seqan3/3288
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 98.13%. Comparing base (
30bdf8d
) to head (d4a9857
). Report is 14 commits behind head on main.
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Currently I am a big fan of CPM and this PR is a big step in the right direction.
- Where do the changes of
gtest_build
->gtest_main
andbenchmark_build
->benchmark_main
come from? that is from having newer dependencies?
{gtest,benchmark}_build
where target defined by SeqAn3. {gtest,benchmark}_main
are targets defined by gtest and benchmark.
- The workflows/CI has many
-j2
removed, was that on purpose?
It's set in the environment, such that we don't need to update each workflow if the runners get more cores.
I guess there is also a way to make it dynamic in the docker image, but it isn't for now.
I put some random annotation with my thoughts to some lines. I think that this PR already tackles so much, that it is good to go.
This should make things easier eventually. See https://github.com/cpm-cmake/CPM.cmake
Ideally, we would use CMake to create
seqan3-config.cmake
andseqan3-config-version.cmake
, i.e. use proper CMake packaging, which got a lot better since SeqAn3 was created.For now, I'm keeping the old way of packaging.
Overview
CPM.cmake
When running from a git clone,
build_system/CPM.cmake
downloads the actualCPM.cmake
and includes it. For source packages, the downloadedCPM.cmake
replaces thebuild_system/CPM.cmake
file in the project.CPM
Dependencies are gathered by CPM.
Local packages (i.e., such found via
find_package
) can be used by setting the environment variableCPM_USE_LOCAL_PACKAGES
toON
, or passing-DCPM_USE_LOCAL_PACKAGES=ON
to CMake.Packages can also be overridden by passing
-D<DEPENDENCY>_SOURCE_DIR=<path>
to CMake. For example, with-Ddoxygen_awesome_SOURCE_DIR=/path/to/doxygen-awesome
, thedoxygen-awesome
package will be used from/path/to/doxygen-awesome
.<DEPENDENCY>
refers to the value ofNAME
inbuild_system/package-lock.cmake
.Vendored
Vendored dependencies are included in the project and have a fixed path. For example,
sdsl
is vendored ininclude/seqan3/vendor/sdsl-lite
.SeqAn2
SeqAn2 will be included when building tests if
SEQAN3_WITH_SEQAN2
is set toON
, orCI
is setSEQAN3_WITH_SEQAN2
isOFF
by default. IfCI
is set, you can pass-DSEQAN3_WITH_SEQAN2_CI=OFF
to CMake to disable SeqAn2.Werror
Warnings are treated as errors if
SEQAN3_WITH_WERROR
is set toON
(Default)SEQAN3_WITH_WERROR
isON
by default. You can pass-DSEQAN3_WITH_WERROR=OFF
to CMake to disable treating warnings as errors.To do
seqan/cmake-scripts/ccache