我正在尝试添加boost bjam构建作为外部cmake项目。
这是用于构建boost的cmake代码
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,同样的步骤也不会失败。
错误是
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指定一个单独的临时目录?
发布于 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)。希望这能有所帮助。
https://stackoverflow.com/questions/60335004
复制相似问题