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
Uh oh!
There was an error while loading. Please reload this page.
-
It was recently pointed out (in #708) that one target included in the catch-all
make installtarget 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 theinstalltarget and whether there should or could be other useful targets. For example, theregression_teststarget 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>libtarget, and those that have a driver code also contain a<ModuleName>_drivertarget. Similarly, the OpenFAST and FAST.Farm glue codes have corresponding targets:openfastandFAST.Farm.Some standard CMake targets are:
EXCLUDE_FROM_ALLinstall()and moves binaries to the configured location (influenced byCMAKE_INSTALL_DIR).Documentation
doxygen(html, pdf, latex if configured)sphinxdoxygen)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
openfastand 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.
openfastcppliband any future modules libraries with C APIs as shared libraries for integration into other softwareopenfastlib,openfastcpplib, andc_apiFAST.Farmfrom 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.openfastcppfrom the "install" and "all" targetsBeta Was this translation helpful? Give feedback.
All reactions