gpt4 book ai didi

CMake 的对象输出文件夹变量

转载 作者:行者123 更新时间:2023-12-04 15:07:12 25 4
gpt4 key购买 nike

“${PROJECT_BINARY_DIR}/CMakeFiles/project.dir/”,编译产生的地方目标文件将如何放置,可以取消硬编码?

直接解决问题,我们有一些测试来检查由 harfbuzz cmake 编译产生的对象,我们使用硬编码字符串 there但这似乎不对,我希望存在一些 ${} 或 $<> 。

最佳答案

恐怕你在这里倒霉了。 CMake 按照设计将此作为内部实现细节。

我想说它不太可能改变,但如果你想绝对面向 future ,你可以使用一种解决方法,从目标文件中创建一个静态库,然后手动将其解压回目标文件(使用适当的归档程序/图书管理员)作为测试的一部分。如果目标文件也被另一个目标使用,并且链接到那个静态库对那个目标不起作用,你可以创建一个 object library从文件中删除,然后在原始目标和测试静态库中使用它。

以下是如何实现此解决方法的示例:

add_library(MyObjectLib OBJECT src/a.cpp src/b.cpp)

add_executable(Main src/main.cpp $<TARGET_OBJECTS:MyObjectLib>)

add_library(LibForTesting STATIC $<TARGET_OBJECTS:MyObjectLib>)

add_test(
NAME check-static-inits.sh
COMMAND ${PROJECT_SOURCE_DIR}/src/prepare-and-check-static-inits.sh $<TARGET_FILE:LibForTesting>
)

这就是脚本 prepare-and-check-static-inits.sh看起来像(伪代码):
ar -x $1 -o some_dir
./check-static-inits.sh some_dir

关于CMake 的对象输出文件夹变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48296061/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com