gpt4 book ai didi

cmake - 如何从 CMake 构建目标仅生成目标文件 (*.o)?

转载 作者:行者123 更新时间:2023-12-04 02:16:04 24 4
gpt4 key购买 nike

我正在尝试使用 CMake 构建一个目标文件,但我似乎无法让 CMake 构建一个完整的可执行文件以外的东西。我基本上是在寻找以下编译的结果(结果将加载到 VxWorks 目标上并随后链接):

$(CC) $(CFLAGS) $(INC_DIRS) -c src/object.c

我试过更改 OUTPUT_NAME目标的属性,但这似乎也无济于事。

我想我可以通过使用自定义命令来解决这个问题,但这似乎我也在解决 CMake 提供的好东西。

谢谢你的帮助!

最佳答案

这个答案是在 CMake mailing list 中给我的。它就像一个魅力:
看下面${CMAKE_SOURCE_DIR}/cpo脚本:

#!/bin/sh
d=$1; shift
while [ "$1" != "--" ]; do
cp $1 $d/$(basename $1); shift
done
现在,查看以下 CMakeLists.txt:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
PROJECT(CPO C)
FILE(WRITE ${CMAKE_BINARY_DIR}/f.c "void f(void){}\n")
ADD_LIBRARY(f SHARED f.c)
SET_TARGET_PROPERTIES(f PROPERTIES RULE_LAUNCH_LINK
"${CMAKE_SOURCE_DIR}/cpo ${CMAKE_BINARY_DIR} <OBJECTS> --"
)
启动脚本“cpo”使目标“f”在
作为第一个参数传入的目录而不是库;
其他一切都应该照常营业。关键是脚本
访问 <OBJECTS>占位符,所以它可以对对象进行操作
文件,而忽略“--”之后的实际链接命令。那
方式,您可以使用 CMake 的所有功能进行编译和
在链接发生之​​前拦截。 IMO,这是一个相当干净的
应该很容易适应您的需求的解决方案;不足之处
是那个使用 RULE_LAUNCH_LINK仅限于 Makefile发电机。

关于cmake - 如何从 CMake 构建目标仅生成目标文件 (*.o)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4765222/

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