1

我有复杂的 C++ 项目。现在我在我的项目中添加了 c++ node.js 插件。我想用整个项目构建这个插件,所以我需要分别修改cmake文件。在我的根 cmake 文件中,我执行了以下操作:

add_subdirectory(nodejsaddon)
add_custom_target (
npm-target
COMMAND cd nodejsaddon && npm install node-addon-api && npm run build
)

nodejsaddon- 包含我的插件源和相应 .gyp 和 .json 文件的文件夹名称。但是,当我运行时,我cmake ..\\testproj\\ -G "Visual Studio 15 Win64" -T "v140, host=x64 在 nodejsaddon 文件夹中看不到 npb 构建结果。我做错了什么?如何让 npm 在 nodejsaddon 文件夹中生成构建文件?

4

1 回答 1

1

https://cmake.org/cmake/help/v3.15/command/add_custom_target.html

首先,自定义目标不会在项目生成期间运行。它们在构建过程中运行,例如cmake --build .构建项目。

其次,自定义目标通常仅在显式构建该目标时运行。例如cmake --build . --target npm-target

如果您想npm-target成为ALL目标的一部分,请添加ALL到命令中:

add_custom_target (npm-target ALL COMMAND cd nodejsaddon && npm install node-addon-api && npm run build )

如果目标依赖于首先构建的其他目标,则用于add_dependencies()添加依赖信息。

但目前尚不清楚您是否真的希望在每次构建期间运行它,或者在项目生成期间只运行一次。

于 2019-09-05T11:40:34.897 回答