You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
It was recently pointed out (in #708) that one target included in the catch-all make install target doesn't truly fit: openfastcpp. This target compiles the C++ driver code that was developed as a test for the OpenFAST C++ API (openfastcpplib). This brings up a follow on question of which targets should be included in the install target and whether there should or could be other useful targets. For example, the regression_tests target was recently added to compile and "install" the relevant portions of the project for regression testing without compiling additional code that isn't required.
Target Map
Existing
Each physics module has a <ModuleName>lib target, and those that have a driver code also contain a <ModuleName>_driver target. Similarly, the OpenFAST and FAST.Farm glue codes have corresponding targets: openfast and FAST.Farm.
Some standard CMake targets are:
all: Compiles all targets in the project unless marked EXCLUDE_FROM_ALL
install: Compiles all targets registered with the CMake command install() and moves binaries to the configured location (influenced by CMAKE_INSTALL_DIR).
Documentation
doxygen: Builds the API docs with Doxygen
sphinx: Builds all sphinx-based documentation including doxygen (html, pdf, latex if configured)
docs: Synonym for sphinx
sphinx-html: Builds the sphinx-based documentation in HTML format only (does not build doxygen)
sphinx-pdf: Builds the sphinx-based documentation in PDF format only (does not build doxygen)
All are disabled unless configured with -DBUILD_DOCUMENTATION.
Testing
Since the testing infrastructure uses include(CTest), a few unused targets are added for each of the primary targets (Experimental, Nightly, Continuous).
Additionally, we add the following
regression_tests: Compiles openfast and the DISCON controller library targets for OpenFAST and FAST.Farm
unit_tests: Compiles all available unit test targets which themselves contain pFUnit as a dependency
All are disabled unless configured with -DBUILD_TESTING.
C++ API
openfastcpplib: Compiles the C++ API
openfastcpp: Compiles the C++ API and the C++ driver code
Both are disabled unless configured with -DBUILD_OPENFAST_CPP_API.
Proposed
I propose that we modify the list of existing targets to better suit our needs.
Add these additional targets:
module_drivers: Compiles all module driver codes
c_api: Compiles openfastcpplib and any future modules libraries with C APIs as shared libraries for integration into other software
dev_libraries: Compiles openfastlib, openfastcpplib, and c_api
Remove FAST.Farm from compiling by default and enable it with a CMake configuration flag. This allows the CI infrastructure and other integrations that require "installing" OpenFAST but are unrelated to FAST.Farm to compile and complete quickly.
Remove openfastcpp from the "install" and "all" targets
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
-
It was recently pointed out (in #708) that one target included in the catch-all
make install
target doesn't truly fit:openfastcpp
. This target compiles the C++ driver code that was developed as a test for the OpenFAST C++ API (openfastcpplib
). This brings up a follow on question of which targets should be included in theinstall
target and whether there should or could be other useful targets. For example, theregression_tests
target was recently added to compile and "install" the relevant portions of the project for regression testing without compiling additional code that isn't required.Target Map
Existing
Each physics module has a
<ModuleName>lib
target, and those that have a driver code also contain a<ModuleName>_driver
target. Similarly, the OpenFAST and FAST.Farm glue codes have corresponding targets:openfast
andFAST.Farm
.Some standard CMake targets are:
EXCLUDE_FROM_ALL
install()
and moves binaries to the configured location (influenced byCMAKE_INSTALL_DIR
).Documentation
doxygen
(html, pdf, latex if configured)sphinx
doxygen
)doxygen
)All are disabled unless configured with
-DBUILD_DOCUMENTATION
.Testing
Since the testing infrastructure uses
include(CTest)
, a few unused targets are added for each of the primary targets (Experimental
,Nightly
,Continuous
).Additionally, we add the following
openfast
and the DISCON controller library targets for OpenFAST and FAST.FarmAll are disabled unless configured with
-DBUILD_TESTING
.C++ API
Both are disabled unless configured with
-DBUILD_OPENFAST_CPP_API
.Proposed
I propose that we modify the list of existing targets to better suit our needs.
openfastcpplib
and any future modules libraries with C APIs as shared libraries for integration into other softwareopenfastlib
,openfastcpplib
, andc_api
FAST.Farm
from compiling by default and enable it with a CMake configuration flag. This allows the CI infrastructure and other integrations that require "installing" OpenFAST but are unrelated to FAST.Farm to compile and complete quickly.openfastcpp
from the "install" and "all" targetsBeta Was this translation helpful? Give feedback.
All reactions