“无用”的前言
在《初步了解 make 的基础并尝试使用》和《研究HDK(Houdini Development Kit):使用CMake自动生成VS工程》中,我描述了我对“make”的学习和试用其配置一个HDK的工程。
但当我现在需要配置一个新工程时,回来参考这两篇博客时,我发现其中有很多“无用的废话”。所谓的“废话”其实是配置工程中一些错误的尝试或者延伸的思考,当然并非无用,但当我只需要知道 “如何配置一个新的HDK工程” 时,就会发现博客中记录的内容很多是不需要关心的。
因此我想用最简单的描述重新总结一下 “配置一个HDK工程的通用步骤”。
本篇将分为:
- 【环境准备】 描述了在第一次配置工程中需要做的步骤。之后不需要再做。
- 【创建新工程步骤】 描述了每次创建新工程时都需要重复的步骤。
- 【Trouble Shooting】 记录了一些问题的解决方式。
环境准备
1.HDK包含在Houdini中
HDK包含在Houdini安装目录中,只要从官网上下载Houdini即可拥有HDK了。
2.CMake
从官网上下载CMake:

如果一切正常,应该能完成《初步了解 make 的基础并尝试使用》中【3.1~3.3】的小实验。
如果出问题,可以查阅文末【Trouble Shooting】的【1】
创建新工程步骤
1.准备源代码
首先准备源代码,一般来自于HDK中的范例(Houdini安装目录\toolkit\samples)。
最后形成这样的目录结构:

其中,源代码和CMakeLists.txt都放在工程目录的src下。
2.编辑 CMakeLists.txt
模板如下:
cmake_minimum_required( VERSION 3.6 )
# 解决方案名:
project( HDK_Project )
# 请将此目录替换为本机Houdini的安装目录(注意为斜杠"/"不是"\")
list( APPEND CMAKE_PREFIX_PATH "C:/Program Files/Side Effects Software/Houdini 18.5.408/toolkit/cmake" )
# Locate Houdini's libraries and header files.
# Registers an imported library target named 'Houdini'.
find_package( Houdini REQUIRED )
# 将要生成的库的名字:
set( library_name DM_BackgroundHook )
# 根据代码中是否有内嵌的DS文件来选择是启用还是注释掉:
#houdini_generate_proto_headers( FILES 源代码.C )
# 添加代码文件:
add_library( ${library_name} SHARED
DM_BackgroundHook.C
)
# Link against the Houdini libraries, and add required include directories and
# compile definitions.
target_link_libraries( ${library_name} Houdini )
# Include ${CMAKE_CURRENT_BINARY_DIR} for the generated header.
target_include_directories( ${library_name} PRIVATE
${CMAKE_CURRENT_BINARY_DIR}
)
# Sets several common target properties, such as the library's output directory.
houdini_configure_target( ${library_name} )需要做以下改动:

1)修改解决方案名(如果有必要)

此名字将为生成的.sln文件的名字
2)填写HDK目录中cmake文件夹的路径
注意为斜杠/不是\:

3)指定 库(dll) 的名字

此为生成的.vcxproj文件的名字,也为最终生成dll文件的名字。
4)看是否需要houdini_generate_proto_headers
如果源代码中有内嵌的DS文件,例如:

则需要:
# Code generation for the embedded DS file in SOP_Star.C.
houdini_generate_proto_headers( FILES SOP_Star.C )否则就不需要
5)添加源代码

3.使用CMake
3.1 设定目录
设定src与build目录:

随后点Configure进行配置
3.2 配置
设定当前VisualStudio的版本,和x64为平台:

随后点Finish。如果有问题则会出现红字,没问题的话则最后显示完成:

(不用担心红色的条框,再点一下“Configure”即可消除红色)
3.3 生成
点击Generate即可完成生成

生成工程在build目录:

4. 使用VS
右键项目点生成

即可发现dll被放到正确的位置
Trouble Shooting
1.Cmake找不到VisualStudio
有可能VS中的CMake的组件没安装,安装步骤如下:
打开VS的安装器:

然后点修改

在单个组件下找到用于 CMake 的Visual C++ 工具,确保它是勾选的,然后点右下角修改

2. 由于版本问题编译不过

我在用VS2019编译“DM_BackgroundHook”这个范例时编译不过(Houdini版本 18.0.348)
随后换了更高级的Houdini版本18.5.408就没了问题。
或许以后遇到类似问题时可以尝试切换VS或者Houdini的版本。
















