我正在尝试使用 CMake 构建一个对象文件,但我似乎无法让 CMake 构建除完整可执行文件之外的其他内容。我基本上是在寻找以下编译的结果(结果将加载到 VxWorks 目标上并然后链接):
$(CC) $(CFLAGS) $(INC_DIRS) -c src/object.c
我尝试过改变OUTPUT_NAME
目标的属性,但这似乎也没有帮助。
我认为我可以通过使用自定义命令来解决这个问题,但这似乎我也在解决 CMake 提供的好东西。
感谢您的帮助!
这个答案是在CMake 邮件列表 http://www.cmake.org/pipermail/cmake/2011-January/042284.html它就像一个魅力:
看看下面的${CMAKE_SOURCE_DIR}/cpo
script:
#!/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
发电机。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)