首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >boost bjam作为cmake外部项目失败

boost bjam作为cmake外部项目失败
EN

Stack Overflow用户
提问于 2020-02-21 16:47:03
回答 1查看 201关注 0票数 1

我正在尝试添加boost bjam构建作为外部cmake项目。

这是用于构建boost的cmake代码

代码语言:javascript
复制
include(ExternalProject)
ExternalProject_Add(
        libboost
        PREFIX ${BOOST_BUILD_DIRECTORY}
        SOURCE_DIR ${BOOST_SOURCE_DIRECTORY}
        BINARY_DIR ${BOOST_SOURCE_DIRECTORY}
        CONFIGURE_COMMAND ""
        BUILD_COMMAND ${b2Path}
                --build-dir=${BOOST_BUILD_DIRECTORY}
                --link=static
                --variant=debug
                --build-type=complete
        INSTALL_COMMAND ${b2Path}
                --prefix=${BOOST_BUILD_DIRECTORY}/${BoostFolderName}
                --link=static
                --variant=debug
                --build-type=complete
        INSTALL_DIR ${BOOST_BUILD_DIRECTORY}/${BoostFolderName}
        LOG_BUILD ON
        LOG_INSTALL ON
        )
message("boostbuild done")

这里的问题是,它偶尔会失败。如果通过命令行调用bjam,同样的步骤也不会失败。

错误是

代码语言:javascript
复制
 type "C:\Users\adhal\AppData\Local\Temp\jam6818c95b4.000" > "C:\build-sdk-Desktop_Qt_5_11_3_MSVC2017_64bit-Debug\external\boost\boost\bin.v2\libs\program_options\build\msvc-14.1\debug\address-model-64\link-static\runtime-link-static\threading-multi\libboost_program_options-variant-vc141-mt-sgd-x64-1_73-static.cmake"

...failed text-action C:\build-sdk-Desktop_Qt_5_11_3_MSVC2017_64bit-Debug\external\boost\boost\bin.v2\libs\program_options\build\msvc-14.1\debug\address-model-64\link-static\runtime-link-static\threading-multi\libboost_program_options-variant-vc141-mt-sgd-x64-1_73-static.cmake...
...skipped <pC:\proj\sdk\external\boost-program-options\stage\lib\cmake\boost_program_options-1.73.0>libboost_program_options-variant-vc141-mt-sgd-x64-1_73-static.cmake for lack of <pC:\build-sdk-Desktop_Qt_5_11_3_MSVC2017_64bit-Debug\external\boost\boost\bin.v2\libs\program_options\build\msvc-14.1\debug\address-model-64\link-static\runtime-link-static\threading-multi>libboost_program_options-variant-vc141-mt-sgd-x64-1_73-static.cmake...
compile-c-c++ C:\build-sdk-Desktop_Qt_5_11_3_MSVC2017_64bit-Debug\external\boost\boost\bin.v2\libs\regex\build\msvc-14.1\debug\address-model-64\link-static\runtime-link-static\threading-multi\regex.obj

当我运行完全相同的步骤时,它没有将file(C:\Users\adhal\AppData\Local\Temp\jam6818c95b4.000).因为它是一个临时文件,所以它被删除了。

如果我做错了什么,有人能告诉我吗?是否可以为bjam指定一个单独的临时目录?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-19 00:05:38

遇到同样的问题。在我的例子中,向上移动build文件夹很有帮助。

问题检查故事-临时.bat文件包含

键入"C:\Users\amorozov\AppData\Local\Temp\jam43e8891f.000“> "bin.v2\libs\program_options\build\msvc-14.1\debug\address-model-64\link-static\runtime-link-static\threading-multi\libboost_program_options-variant-vc141-mt-sgd-x64-1_73-static.cmake”

从进行构建的cmake二进制目录运行它也会失败。将命令拆分到目标目录的type和dir成功。写入具有较短名称的文件成功。已检查.cmake文件的文件路径总长度,超过256个字节。似乎cmd不允许重定向到非常长的路径名。将整个项目的目录上移几个解决了我的问题。

如果这样还不能解决问题,可以在windbg下运行b2,在kernel32!DeleteFileW上使用断点来检查您的临时.bat文件。文件名为du poi(@esp+4)。希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60335004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档