### Setting Project Directories Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Defines various project directories, including the dependencies directory, Omni Client directory, Carb SDK directory, binary installation directory, Houdini directory, and Python include/library directories. These paths are used to locate dependencies and install the built binaries. ```cmake set(DEPENDENCIES_DIR "${CMAKE_SOURCE_DIR}/_build/target-deps") set(OMNI_CLIENT_DIR "${DEPENDENCIES_DIR}/omni_client_library") set(CARB_SDK_DIR "${DEPENDENCIES_DIR}/carb_sdk_plugins") set(BINARY_INSTALL_DIR "${CMAKE_SOURCE_DIR}/_build") set(HOUDINI_DIR "${DEPENDENCIES_DIR}/houdini_hdk") set(PYTHON_INCLUDE_DIR "${HOUDINI_DIR}/python${PY_VER_INT}/include") set(PYTHON_LIBRARY_DIR "${HOUDINI_DIR}/python${PY_VER_INT}/lib") set(PYTHON_LIBS_DIR "${HOUDINI_DIR}/python${PY_VER_INT}/libs") ``` -------------------------------- ### Configuring Houdini Dependencies in XML Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/README.md This XML snippet shows how to configure the paths to the houdini_usd dependency within the `target-deps.packman.xml` file. The `source path` attribute must be updated to point to the local Houdini USD installation directory. ```xml ``` -------------------------------- ### Acknowledging XZ Utils in Software Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/python-LICENSES/xz-LICENSE.txt This code snippet provides an example of a notice to include in the "about box" or documentation when incorporating code from XZ Utils into a software project. It acknowledges the source of the code and provides a link to the XZ Utils website. ```plaintext This software includes code from XZ Utils . ``` -------------------------------- ### Running Houdini Launcher Script Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/README.md This bash script launches Houdini with the necessary paths set to load the compiled plugin from the `_staging` directory. ```bash .\houdini_launcher.{bat/sh} ``` -------------------------------- ### Building the Plugin on Windows Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/README.md This bash script builds the Houdini Omniverse plugin on Windows. It executes the `build_win64.bat` script. ```bash .\build_win64.bat ``` -------------------------------- ### Initializing CMake Project Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmni/CMakeLists.txt This snippet initializes the CMake project, sets the minimum required CMake version, and defines the project name and library name. It also sets the rpath for Linux builds to locate shared libraries at runtime. ```cmake cmake_minimum_required( VERSION 3.13 ) project( HoudiniOmni ) set( library_name HoudiniOmni ) # Set rpath for Linux build if (NOT WIN32) SET(CMAKE_INSTALL_RPATH "\$ORIGIN/../../lib") endif() ``` -------------------------------- ### Building the Plugin on Linux Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/README.md This bash script builds the Houdini Omniverse plugin on Linux. It executes the `build_linux.sh` script. ```bash ./build_linux.sh ``` -------------------------------- ### Setting Include Directories Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmni/CMakeLists.txt This snippet sets the include directories for the HoudiniOmni library, including the current binary directory, the omniclient include directory, and the carb SDK include directory. The same include directories are used for both Debug and Release builds. ```cmake if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_include_directories( ${library_name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${OMNI_CLIENT_DIR}/include ${CARB_SDK_DIR}/include ) else() target_include_directories( ${library_name} PRIVATE ${CMAKE_CURRENT_BINARY_DIR} ${OMNI_CLIENT_DIR}/include ${CARB_SDK_DIR}/include ) endif() ``` -------------------------------- ### Applying Apache License Notice Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/python-LICENSES/pip-vendor-tenacity-LICENSE.txt This snippet shows the boilerplate notice to attach to your work when applying the Apache License 2.0. Replace the bracketed fields with your own identifying information. The text should be enclosed in the appropriate comment syntax for the file format. ```plaintext Copyright [yyyy] [name of copyright owner] Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ``` -------------------------------- ### BSD License Terms for msinttypes Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/carbonite-LICENSES/rapidjson-LICENSE.txt This snippet provides the BSD license terms applicable to the msinttypes library. It outlines the conditions for redistribution and use of the software in source and binary forms, including the requirement to retain copyright notices and disclaimers. ```txt Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ``` -------------------------------- ### Specifying Houdini Version with Launcher Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/README.md This bash script launches Houdini with a specified version using the `--hver` argument. ```bash .\houdini19_launcher.bat --hver 19.5.303 ``` -------------------------------- ### Houdini USD Folder Structure Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/README.md This code block shows the required folder structure for the houdini_usd dependency. It includes include directories for various libraries and a lib directory containing python and usd_plugins. ```bash houdini_usd ├── include │   ├── Alembic │   ├── boost │   ├── draco │   ├── hboost │   ├── libpng16 │   ├── MaterialXCore │   ├── MaterialXFormat │   ├── MaterialXGenGlsl │   ├── MaterialXGenMdl │   ├── MaterialXGenMsl │   ├── MaterialXGenOsl │   ├── MaterialXGenShader │   ├── MaterialXRender │   ├── MaterialXRenderGlsl │   ├── MaterialXRenderHw │   ├── MaterialXRenderOsl │   ├── OpenEXR │   ├── OpenImageIO │   ├── opensubdiv │   ├── pxr │   ├── python3.11 │   ├── serial │   └── tbb └── lib ├── python └── usd_plugins ``` -------------------------------- ### Executing the Test Suite Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/README.md This bash script executes the complete test suite for the Houdini Omniverse plugin. ```bash .\run_tests.{bat/sh} ``` -------------------------------- ### Setting Target Properties Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_export_usd/CMakeLists.txt Sets properties for the executable target, including the runtime output directory and the Visual Studio folder. The runtime output directory is set to ${BINARY_INSTALL_DIR}/Tests, and the Visual Studio folder is set to Tests. ```CMake set_target_properties( ${exe_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/Tests # Put project in "Tests" Visual Studio folder. FOLDER Tests ) ``` -------------------------------- ### Setting Target Properties Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_load_usd/CMakeLists.txt Sets properties for the executable target, such as the runtime output directory and the Visual Studio folder. This command allows for customization of the build process and output organization. ```cmake set_target_properties( ${exe_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/Tests # Put project in "Tests" Visual Studio folder. FOLDER Tests ) ``` -------------------------------- ### Setting Include Directories Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/OP_Omni/CMakeLists.txt Sets the include directories for the library, specifying where the compiler should look for header files. This includes the source and binary directories of HoudiniOmni, the Python include directory, and the Carb SDK include directory. This is done regardless of build type (Debug or Release). ```cmake if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_include_directories( ${library_name} PRIVATE ${HoudiniOmni_SOURCE_DIR} ${HoudiniOmni_BINARY_DIR} ${PYTHON_INCLUDE_DIR} ${CARB_SDK_DIR}/include ) else() target_include_directories( ${library_name} PRIVATE ${HoudiniOmni_SOURCE_DIR} ${HoudiniOmni_BINARY_DIR} ${PYTHON_INCLUDE_DIR} ${CARB_SDK_DIR}/include ) endif() ``` -------------------------------- ### Setting Output Directories Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmni/CMakeLists.txt This snippet sets the runtime and archive output directories for the HoudiniOmni library. It specifies where the built library files will be placed after the build process. ```cmake set_target_properties( ${library_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/${library_name} ARCHIVE_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/${library_name} ) ``` -------------------------------- ### Specifying Houdini Version for Tests Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/README.md This bash script executes the test suite with a specified Houdini version using the `--hver` argument. ```bash ./run_tests.sh --hver 19.5.303 ``` -------------------------------- ### Creating CMake Project Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_load_usd/CMakeLists.txt Creates a CMake project with the specified name. This command is required to define a CMake project and allows CMake to manage the build process. ```cmake project ( ${exe_name} ) ``` -------------------------------- ### Linking Dependencies Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmni/CMakeLists.txt This snippet links the HoudiniOmni library with its dependencies, including omniclient and carb libraries. It uses different library paths for optimized (release) and debug builds, and it distinguishes between Windows and Linux platforms. ```cmake if (WIN32) target_link_libraries( ${library_name} optimized ${OMNI_CLIENT_DIR}/release/omniclient.lib debug ${OMNI_CLIENT_DIR}/debug/omniclient.lib optimized ${CARB_SDK_DIR}/_build/windows-x86_64/release/carb.lib debug ${CARB_SDK_DIR}/_build/windows-x86_64/debug/carb.lib ) else () target_link_libraries( ${library_name} optimized ${OMNI_CLIENT_DIR}/release/libomniclient.so debug ${OMNI_CLIENT_DIR}/debug/libomniclient.so optimized ${CARB_SDK_DIR}/_build/linux-x86_64/release/libcarb.so debug ${CARB_SDK_DIR}/_build/linux-x86_64/debug/libcarb.so ) endif(WIN32) ``` -------------------------------- ### Setting Include Directories Based on Build Type Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmniPy/CMakeLists.txt Sets the include directories for the target module based on the build type (Debug or Release). It includes the source and binary directories of HoudiniOmni, as well as the include directory of the CARB SDK. This ensures that the necessary header files are available during compilation. ```cmake if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_include_directories( ${module_name} PRIVATE ${HoudiniOmni_SOURCE_DIR} ${HoudiniOmni_BINARY_DIR} ${CARB_SDK_DIR}/include ) else() target_include_directories( ${module_name} PRIVATE ${HoudiniOmni_SOURCE_DIR} ${HoudiniOmni_BINARY_DIR} ${CARB_SDK_DIR}/include ) endif() ``` -------------------------------- ### Houdini HDK Folder Structure Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/README.md This code block shows the required folder structure for the houdini_hdk dependency. It includes dsolib, python311, and toolkit directories. ```bash houdini_hdk ├── dsolib │   ├── empty_jemalloc │   ├── Qt_plugins │   └── usd_plugins ├── python311 │   ├── bin │   ├── include │   ├── lib │   └── share └── toolkit ├── cmake ├── codegenTemplates ├── include ├── makefiles ├── samples └── slides ``` -------------------------------- ### Creating Project Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_export_usd/CMakeLists.txt Creates a CMake project with the specified name. This command is required to define a CMake project. ```CMake project ( ${exe_name} ) ``` -------------------------------- ### MIT License Terms Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/carbonite-LICENSES/rapidjson-LICENSE.txt This snippet details the terms of the MIT License, which governs the use of RapidJSON. It allows for unrestricted use, copying, modification, merging, publishing, distribution, sublicensing, and selling of the software, provided that the copyright notice and permission notice are included in all copies or substantial portions of the software. ```txt Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. ``` -------------------------------- ### JSON License Terms for JSON_checker Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/carbonite-LICENSES/rapidjson-LICENSE.txt This snippet presents the terms of the JSON License applicable to JSON_checker. It grants permission to use, copy, modify, and distribute the software, subject to the inclusion of copyright and permission notices, and the stipulation that the software be used for Good, not Evil. ```txt Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. The Software shall be used for Good, not Evil. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------- ### Setting Target Properties Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmniPy/CMakeLists.txt Sets various properties for the target module, such as the output name, suffix, prefix, library output directory, and link flags. The output name is set to 'client', the suffix is determined by the PY_BINDING_SUFFIX variable, the prefix is set to an empty string, the library output directory is set to ${BINARY_INSTALL_DIR}/${module_name}, and the link flags are set to '/INCREMENTAL:NO' for RelWithDebInfo builds. ```cmake set_target_properties( ${module_name} PROPERTIES OUTPUT_NAME "client" SUFFIX ${PY_BINDING_SUFFIX} PREFIX "" LIBRARY_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/${module_name} LINK_FLAGS_RELWITHDEBINFO "/INCREMENTAL:NO" ) ``` -------------------------------- ### Adding Executable Target Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_load_usd/CMakeLists.txt Adds an executable target to the project. This command specifies the source files that should be compiled and linked to create the executable. ```cmake add_executable (${exe_name} test_he_load_usd.cpp) ``` -------------------------------- ### Setting Target Properties Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/FS_Omni/CMakeLists.txt Sets the runtime and archive output directories for the library. This determines where the compiled library will be placed after the build process is complete. ```cmake set_target_properties( ${library_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/${library_name} ARCHIVE_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/${library_name} ) ``` -------------------------------- ### Setting Include Directories Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/FS_Omni/CMakeLists.txt Sets the include directories for the library. These directories contain the header files that are needed to compile the library. The include directories are set differently depending on whether the build type is Debug or Release. ```cmake if(CMAKE_BUILD_TYPE STREQUAL "Debug") target_include_directories( ${library_name} PRIVATE ${HoudiniOmni_SOURCE_DIR} ${HoudiniOmni_BINARY_DIR} ${CARB_SDK_DIR}/include ) else() target_include_directories( ${library_name} PRIVATE ${HoudiniOmni_SOURCE_DIR} ${HoudiniOmni_BINARY_DIR} ${CARB_SDK_DIR}/include ) endif() ``` -------------------------------- ### Adding HoudiniOmni Library Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmni/CMakeLists.txt This snippet adds the HoudiniOmni library and specifies the source files to be included in the build. The library is created as a shared library. ```cmake # Add a library and its source files. add_library( ${library_name} SHARED HoudiniOmni.h HoudiniOmniResultTypes.h HoudiniOmniTypes.h HoudiniOmniUtils.h HoudiniOmniVersion.h HoudiniOmni.cpp ) ``` -------------------------------- ### Creating Project Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/houdini_engine_test/CMakeLists.txt Creates a CMake project with the specified name. This command is required to define a CMake project and allows for further configuration of the project's build process. ```CMake project ( ${exe_name} ) ``` -------------------------------- ### MIT License Text Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/carbonite-LICENSES/doctest-LICENSE.txt This snippet contains the full text of the MIT License. It outlines the permissions granted to users, including the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the software, subject to the inclusion of the copyright notice and permission notice. ```Text The MIT License (MIT) Copyright (c) 2016-2021 Viktor Kirilov Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------- ### Setting Minimum CMake Version Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/FS_Omni/CMakeLists.txt Specifies the minimum required version of CMake for the project. This ensures that the CMake version used to build the project is compatible with the commands and features used in the CMakeLists.txt file. ```cmake cmake_minimum_required( VERSION 3.13 ) ``` -------------------------------- ### Setting Minimum CMake Version Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_load_usd/CMakeLists.txt Specifies the minimum required CMake version for the project. This ensures that the CMake version used to build the project is compatible with the commands and features used in the CMakeLists.txt file. ```cmake cmake_minimum_required( VERSION 3.13 ) ``` -------------------------------- ### Linking Houdini Libraries Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_load_usd/CMakeLists.txt Links the executable against the Houdini libraries. This command specifies the libraries that the executable depends on and ensures that they are linked during the build process. ```cmake target_link_libraries( ${exe_name} Houdini ) ``` -------------------------------- ### Original SSLeay License Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/python-LICENSES/openssl-LICENSE.txt This is the license text for the original SSLeay library. It outlines the terms and conditions for redistribution and use of the software, including requirements for copyright notices, acknowledgments, and restrictions. It also specifies conditions related to commercial and non-commercial use. ```plaintext /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * * This package is an SSL implementation written * by Eric Young (eay@cryptsoft.com). * The implementation was written so as to conform with Netscapes SSL. * * This library is free for commercial and non-commercial use as long as * the following conditions are aheared to. The following conditions * apply to all code found in this distribution, be it the RC4, RSA, * lhash, DES, etc., code; not just the SSL code. The SSL documentation * included with this distribution is covered by the same copyright terms * except that the holder is Tim Hudson (tjh@cryptsoft.com). * * Copyright remains Eric Young's, and as such any Copyright notices in * the code are not to be removed. * If this package is used in a product, Eric Young should be given attribution * as the author of the parts of the library used. * This can be in the form of a textual message at program startup or * in documentation (online or textual) provided with the package. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * 3. All advertising materials mentioning features or use of this software * must display the following acknowledgement: * "This product includes cryptographic software written by * Eric Young (eay@cryptsoft.com)" * The word 'cryptographic' can be left out if the rouines from the library * being used are not cryptographic related :-). */ ``` -------------------------------- ### OpenSSL License Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/python-LICENSES/openssl-LICENSE.txt This is the license text for the OpenSSL toolkit. It outlines the terms and conditions for redistribution and use of the software, including requirements for copyright notices, acknowledgments, and restrictions on naming and endorsement. It also includes a disclaimer of warranty. ```plaintext /* ==================================================================== * Copyright (c) 1998-2019 The OpenSSL Project. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. All advertising materials mentioning features or use of this * software must display the following acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit. (http://www.openssl.org/)" * * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to * endorse or promote products derived from this software without * prior written permission. For written permission, please contact * openssl-core@openssl.org. * * 5. Products derived from this software may not be called "OpenSSL" * nor may "OpenSSL" appear in their names without prior written * permission of the OpenSSL Project. * * 6. Redistributions of any form whatsoever must retain the following * acknowledgment: * "This product includes software developed by the OpenSSL Project * for use in the OpenSSL Toolkit (http://www.openssl.org/)" * * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. * ==================================================================== * * This product includes cryptographic software written by Eric Young * (eay@cryptsoft.com). This product includes software written by Tim * Hudson (tjh@cryptsoft.com). * */ ``` -------------------------------- ### Finding Houdini Package Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Adds the Houdini toolkit CMake path to the CMAKE_PREFIX_PATH and uses find_package to locate Houdini's libraries and header files. This registers an imported library target named 'Houdini', making Houdini's functionality available to the project. ```cmake # CMAKE_PREFIX_PATH must contain the path to the toolkit/cmake subdirectory of # the Houdini installation. list( APPEND CMAKE_PREFIX_PATH "${HOUDINI_DIR}/toolkit/cmake" ) # Locate Houdini's libraries and header files. # Registers an imported library target named 'Houdini'. find_package( Houdini REQUIRED ) ``` -------------------------------- ### Adding a Shared Library Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/FS_Omni/CMakeLists.txt Adds a shared library target named ${library_name} to the project. It specifies the source files that will be compiled and linked to create the library. ```cmake add_library( ${library_name} SHARED FS_Omni.h FS_Omni.cpp FS_OmniInfoHelper.h FS_OmniInfoHelper.cpp FS_OmniReadHelper.h FS_OmniReadHelper.cpp FS_OmniWriteHelper.h FS_OmniWriteHelper.cpp ) ``` -------------------------------- ### Linking Libraries (Windows) Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/OP_Omni/CMakeLists.txt Links the library against the Houdini libraries and other dependencies on Windows. This includes Houdini, HoudiniOmni, Boost Python, Python, and Pixar libraries. ```cmake if (WIN32) target_link_libraries( ${library_name} Houdini HoudiniOmni ${HOUDINI_DIR}/custom/houdini/dsolib/hboost_python${PY_VER_INT}-mt-x64.lib ${PYTHON_LIBS_DIR}/python${PY_VER_INT}.lib ${HOUDINI_DIR}/custom/houdini/dsolib/libpxr_gf.lib ${HOUDINI_DIR}/custom/houdini/dsolib/libpxr_sdf.lib ${HOUDINI_DIR}/custom/houdini/dsolib/libpxr_tf.lib ${HOUDINI_DIR}/custom/houdini/dsolib/libpxr_usd.lib ${HOUDINI_DIR}/custom/houdini/dsolib/libpxr_usdGeom.lib ${HOUDINI_DIR}/custom/houdini/dsolib/libpxr_usdUtils.lib ${HOUDINI_DIR}/custom/houdini/dsolib/libpxr_vt.lib ${HOUDINI_DIR}/custom/houdini/dsolib/libpxr_arch.lib ) endif() ``` -------------------------------- ### Enabling Visual Studio Folders Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Enables the generation of Visual Studio folders for better organization of the project in the Visual Studio IDE. This improves the user experience when working with the project in Visual Studio. ```cmake set_property(GLOBAL PROPERTY USE_FOLDERS ON) ``` -------------------------------- ### Setting Target Properties Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/OP_Omni/CMakeLists.txt Sets the target properties for the library, specifying the runtime and archive output directories. This determines where the compiled library files will be placed after the build process. ```cmake set_target_properties( ${library_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/${library_name} ARCHIVE_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/${library_name} ) ``` -------------------------------- ### Adding Subdirectory for Houdini Engine Tests Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/CMakeLists.txt Adds the 'houdini_engine_test' subdirectory to the build process. This allows CMake to find and build the CMakeLists.txt file located in the 'houdini_engine_test' directory, which likely contains tests for the Houdini Engine integration. ```CMake add_subdirectory (houdini_engine_test) ``` -------------------------------- ### Project Definition Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmniPy/CMakeLists.txt Defines the project name. This command sets the name of the project, which is used by CMake to generate build files and other project-related artifacts. The project name is 'HoudiniOmniPy'. ```cmake project( HoudiniOmniPy ) ``` -------------------------------- ### Linking Houdini Libraries Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_export_usd/CMakeLists.txt Links the executable against the Houdini libraries. This ensures that the executable can use the Houdini API. ```CMake target_link_libraries( ${exe_name} Houdini ) ``` -------------------------------- ### Project Definition Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/FS_Omni/CMakeLists.txt Defines the project name. This command sets the name of the project to FS_Omni, which is used by CMake to generate build files and other project-related artifacts. ```cmake project( FS_Omni ) ``` -------------------------------- ### Linking Libraries Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/FS_Omni/CMakeLists.txt Links the library against the Houdini and HoudiniOmni libraries. This ensures that the library has access to the functions and data structures provided by these libraries. ```cmake target_link_libraries( ${library_name} Houdini HoudiniOmni ) ``` -------------------------------- ### Setting Minimum CMake Version Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmniPy/CMakeLists.txt Specifies the minimum required version of CMake for the project. This ensures that the CMake version used to build the project is compatible with the commands and features used in the CMakeLists.txt file. It is a prerequisite for the rest of the build configuration. ```cmake cmake_minimum_required( VERSION 3.13 ) ``` -------------------------------- ### Defining Project and Library Name Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/OP_Omni/CMakeLists.txt Defines the project name and the library name for the Houdini connector. The library name is used throughout the CMakeLists.txt file to refer to the target library. ```cmake project( OP_Omni ) set( library_name OP_Omni ) ``` -------------------------------- ### Initializing MT19937 Generator with Array in C Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/python-LICENSES/python-000-mersenne-twister-LICENSE.txt Initializes the MT19937 generator state using an array of key values. This function provides a more complex initialization method. The init_key array and key_length parameters specify the initial state. ```C init_by_array(init_key, key_length) ``` -------------------------------- ### Setting Minimum CMake Version Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/OP_Omni/CMakeLists.txt Specifies the minimum required version of CMake for the project. This ensures that the CMake version used to build the project is compatible with the commands and features used in the CMakeLists.txt file. ```cmake cmake_minimum_required( VERSION 3.13 ) ``` -------------------------------- ### Adding Executable Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_export_usd/CMakeLists.txt Adds an executable target to the project. The executable is built from the specified source file (test_he_export_usd.cpp). ```CMake add_executable (${exe_name} test_he_export_usd.cpp) ``` -------------------------------- ### Setting RPATH for Linux Builds Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmniPy/CMakeLists.txt Sets the rpath for Linux builds to ensure that the library can find its dependencies at runtime. This is only executed if the operating system is not Windows (WIN32). The rpath is set to '$ORIGIN/../../lib'. ```cmake if (NOT WIN32) SET(CMAKE_INSTALL_RPATH "\$ORIGIN/../../lib") endif() ``` -------------------------------- ### Adding Executable Target Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/houdini_engine_test/CMakeLists.txt Adds an executable target to the project. This command specifies the source files that will be compiled and linked to create the executable. ```CMake add_executable (${exe_name} houdini_engine_test.cpp) ``` -------------------------------- ### Setting Minimum CMake Version Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/CMakeLists.txt Specifies the minimum required version of CMake for the project. This ensures that the CMake version used to build the project is compatible with the CMake commands used in the CMakeLists.txt file. ```CMake cmake_minimum_required( VERSION 3.13 ) ``` -------------------------------- ### Adding pybind11 Module Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmniPy/CMakeLists.txt Adds a pybind11 module named ${module_name} using the source file HoudiniOmniPy.cpp. This command configures the build system to create a Python module from the specified C++ source file using pybind11. ```cmake pybind11_add_module(${module_name} HoudiniOmniPy.cpp) ``` -------------------------------- ### Adding Subdirectories for Plugin Components Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Adds subdirectories for different components of the Houdini Omni plugin, including HoudiniOmni, HoudiniOmniPy, OP_Omni, FS_Omni, and Tests. The order is important because some subdirectories depend on variables defined in others. ```cmake # Note that HoudiniOmni must be added first, because the CMakeLists for OP_Omni # and FS_Omni reference ${HoudiniOmni_SOURCE_DIR} and ${HoudiniOmni_BINARY_DIR}. The # alternative is to use 'set' above to define our owm variables for these paths. add_subdirectory(HoudiniOmni) add_subdirectory(HoudiniOmniPy) add_subdirectory(OP_Omni) add_subdirectory(FS_Omni) add_subdirectory(Tests) ``` -------------------------------- ### Setting Target Properties Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/houdini_engine_test/CMakeLists.txt Sets the properties of the executable target, such as the runtime output directory and the Visual Studio folder. This allows for customization of the build process and organization of the project in the IDE. ```CMake set_target_properties( ${exe_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${BINARY_INSTALL_DIR}/Tests # Put project in "Tests" Visual Studio folder. FOLDER Tests ) ``` -------------------------------- ### Linking Libraries (Linux) Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/OP_Omni/CMakeLists.txt Links the library against the Houdini libraries and other dependencies on Linux. This includes Houdini, HoudiniOmni, Boost Python, Python, and Pixar libraries. ```cmake else () target_link_libraries( ${library_name} Houdini HoudiniOmni ${HOUDINI_DIR}/dsolib/libhboost_python${PY_VER_INT}-mt-x64.so ${PYTHON_LIBRARY_DIR}/libpython${PY_VER_LIB}.so ${HOUDINI_DIR}/dsolib/libpxr_gf.so ${HOUDINI_DIR}/dsolib/libpxr_sdf.so ${HOUDINI_DIR}/dsolib/libpxr_tf.so ${HOUDINI_DIR}/dsolib/libpxr_usd.so ${HOUDINI_DIR}/dsolib/libpxr_usdGeom.so ${HOUDINI_DIR}/dsolib/libpxr_usdUtils.so ${HOUDINI_DIR}/dsolib/libpxr_vt.so ${HOUDINI_DIR}/dsolib/libpxr_arch.so ) endif(WIN32) ``` -------------------------------- ### Library Name Definition Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/FS_Omni/CMakeLists.txt Sets the library name variable. This variable is used later in the script to define the library name. ```cmake set( library_name FS_Omni ) ``` -------------------------------- ### Defining Executable Name Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_load_usd/CMakeLists.txt Sets the name of the executable to be built. This variable is used throughout the CMakeLists.txt file to refer to the executable target. ```cmake set( exe_name test_he_load_usd ) ``` -------------------------------- ### Linking Libraries Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmniPy/CMakeLists.txt Links the target module with the Houdini and HoudiniOmni libraries. These libraries are specified as PRIVATE dependencies, meaning they are only required for building the module and not for any downstream projects that use it. ```cmake target_link_libraries(${module_name} PRIVATE Houdini HoudiniOmni ) ``` -------------------------------- ### Defining Project Name Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Defines the project name as "houdini-omni-plugin". This name is used for the generated build files and project artifacts. ```cmake project(houdini-omni-plugin) ``` -------------------------------- ### Setting Minimum CMake Version Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Specifies the minimum required version of CMake for the project. This ensures that the CMake version used to build the project supports the features used in the CMakeLists.txt file. ```cmake cmake_minimum_required( VERSION 3.13 ) ``` -------------------------------- ### Setting RPATH for Linux Builds Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/FS_Omni/CMakeLists.txt Sets the rpath for Linux builds to locate shared libraries at runtime. This ensures that the library can find its dependencies when it is executed. ```cmake if (NOT WIN32) SET(CMAKE_INSTALL_RPATH "\$ORIGIN/../../../omni/lib") endif() ``` -------------------------------- ### Setting Minimum CMake Version Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/houdini_engine_test/CMakeLists.txt Specifies the minimum required version of CMake for the project. This ensures that the CMake version used to build the project is compatible with the commands and features used in the CMakeLists.txt file. ```CMake cmake_minimum_required( VERSION 3.6 ) ``` -------------------------------- ### Generating Export Header Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmni/CMakeLists.txt This snippet includes the GenerateExportHeader module and generates a header file (houdiniomni_export.h) that defines macros for exporting symbols from the HoudiniOmni library. This is used to control which symbols are visible outside the library. ```cmake # Generate houdiniomni_export.h header for macros for exporting the HoudiniOmni symbols. include(GenerateExportHeader) generate_export_header( ${library_name} ) ``` -------------------------------- ### Adding pybind11 Subdirectory Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Adds the pybind11 subdirectory to the build. This allows the project to use pybind11 for creating Python bindings for C++ code. ```cmake set(PYBIND11_DIR "${DEPENDENCIES_DIR}/pybind11") add_subdirectory(${PYBIND11_DIR}) ``` -------------------------------- ### Initializing MT19937 Generator with Seed in C Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Third-Party_Licenses/python-LICENSES/python-000-mersenne-twister-LICENSE.txt Initializes the MT19937 generator state using a single seed value. This function must be called before generating random numbers. The seed value is used to set the initial state of the generator. ```C init_genrand(seed) ``` -------------------------------- ### Setting RPATH for Linux Builds Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/OP_Omni/CMakeLists.txt Sets the RPATH for Linux builds to ensure that the library can find its dependencies at runtime. This is only applied when the target platform is not Windows. ```cmake if (NOT WIN32) SET(CMAKE_INSTALL_RPATH "\$ORIGIN/../../omni/lib") endif() ``` -------------------------------- ### Defining Executable Name Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_export_usd/CMakeLists.txt Sets the name of the executable to be built. This variable is used throughout the CMake file to refer to the executable target. ```CMake set( exe_name test_he_export_usd ) ``` -------------------------------- ### Setting C++ Standard Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Sets the C++ standard to C++17 and requires it for the project. This ensures that the code is compiled using the C++17 standard, enabling the use of modern C++ features. ```cmake set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) ``` -------------------------------- ### Setting Python Executable and Binding Suffix Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Sets the Python executable path and the Python binding suffix based on the operating system. On Windows, it uses python.exe, while on Linux, it uses the python3.11 executable and sets rpath settings. This ensures the correct Python interpreter and binding suffix are used for each platform. ```cmake if (WIN32) set(PYTHON_EXECUTABLE "${HOUDINI_DIR}/python${PY_VER_INT}/python.exe") set(PY_BINDING_SUFFIX ".pyd") else () # Set rpath for Linux build set(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) set(CMAKE_BUILD_RPATH_USE_ORIGIN TRUE) set(PYTHON_EXECUTABLE "${HOUDINI_DIR}/python${PY_VER_INT}/bin/python3.11") set(PY_BINDING_SUFFIX ".so") # as per vfxplatform. add_compile_definitions(_GLIBCXX_USE_CXX11_ABI=0) endif (WIN32) ``` -------------------------------- ### Linking Houdini Libraries Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/houdini_engine_test/CMakeLists.txt Links the executable target against the Houdini libraries. This allows the executable to use the functions and classes provided by the Houdini Engine. ```CMake target_link_libraries( ${exe_name} Houdini ) ``` -------------------------------- ### Setting Minimum CMake Version Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/test_he_export_usd/CMakeLists.txt Specifies the minimum required CMake version for the project. This ensures that the CMake version used to build the project is at least 3.13. ```CMake cmake_minimum_required( VERSION 3.13 ) ``` -------------------------------- ### Node Definition: Omni Copy Files Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/assets/help/nodes/other/omni_copy_files.txt Defines a Houdini node for copying files, specifying its type, context, internal name, icon, group, and version. This node facilitates file transfer to and from a Nucleus server. ```Houdini #type: node #context: lop #internal: omni_copy_files #icon: TOP/filecopy #group: attrs #since: 19.0 ``` -------------------------------- ### Defining Executable Name Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/Tests/houdini_engine_test/CMakeLists.txt Sets the name of the executable to be built. This variable is used throughout the CMakeLists.txt file to refer to the executable target. ```CMake set( exe_name houdini_engine_test ) ``` -------------------------------- ### Adding a Shared Library Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/OP_Omni/CMakeLists.txt Adds a shared library target to the CMake project, specifying the source files to be compiled into the library. This defines the core component of the Houdini connector. ```cmake add_library( ${library_name} SHARED CMD_Omni.cpp LOP_OmniLiveSync.cpp LOP_OmniLiveSync.h ) ``` -------------------------------- ### Setting Houdini and Python Versions Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Retrieves the Houdini version from the environment variable HOUDINI_VER, defaulting to "20.0" if not set. Based on the Houdini version, it sets the appropriate Python library and interpreter versions for the build process. This ensures compatibility with the specific Houdini version being used. ```cmake set(HOUDINI_VER $ENV{HOUDINI_VER}) if (NOT ${HOUDINI_VER}) set(HOUDINI_VER "20.0") endif () if (${HOUDINI_VER} STREQUAL "19.0") set(PY_VER_LIB "3.7m") set(PY_VER_INT "37") elif(${HOUDINI_VER} STREQUAL "19.5") set(PY_VER_LIB "3.9") set(PY_VER_INT "39") elif(${HOUDINI_VER} STREQUAL "20.0") set(PY_VER_LIB "3.10") set(PY_VER_INT "310") elif(${HOUDINI_VER} STREQUAL "20.5") set(PY_VER_LIB "3.11") set(PY_VER_INT "311") set(HAPI_7 ON) add_definitions(-DHAPI_7) endif () ``` -------------------------------- ### Module Name Definition Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/HoudiniOmniPy/CMakeLists.txt Sets the module name variable. This variable is used later in the script to define the name of the module being built. The module name is set to 'HoudiniOmniPy'. ```cmake set( module_name HoudiniOmniPy ) ``` -------------------------------- ### Suppressing Compiler Warnings (Windows) Source: https://github.com/nvidia-omniverse/houdini-connector/blob/main/CMakeLists.txt Suppresses specific compiler warnings on Windows, including getenv "unsafe" warnings and deprecated TBB messages. This helps to keep the build output clean and focused on relevant issues. ```cmake if (WIN32) # Suppress getenv "unsafe" warnings. add_compile_definitions(_CRT_SECURE_NO_WARNINGS) # Suppress deprecated tbb/atomic.h and tbb/task.h warnings. add_compile_definitions(TBB_SUPPRESS_DEPRECATED_MESSAGES) endif() ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.