### 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.