使用 cmake 构建外部库
Posted
技术标签:
【中文标题】使用 cmake 构建外部库【英文标题】:Building external libraries with cmake 【发布时间】:2016-11-14 05:57:19 【问题描述】:我正在使用 cmake 构建需要外部库的库。每个外部库都有自己的 makefile。当我从我的CMakeLists.txt
文件中调用这组命令时,什么都没有发生。
任何想法我做错了什么?
add_custom_target(blake
COMMAND mkdir -p $LIBSCAPI_BUILDIR/blake
&& cp -r $LIBSCAPI_BUILDIR/lib/BLAKE2/sse/. $LIBSCAPI_BUILDIR/BLAKE2
make -C $LIBSCAPI_BUILDIR/BLAKE2
make -C $LIBSCAPI_BUILDIR/BLAKE2 BUILDDIR=$(builddir) install
cp $LIBSCAPI_BUILDIR/BLAKE2/libblake2.a install/lib/
touch compile-blake)
【问题讨论】:
【参考方案1】:为了默认构建一个target,你需要在add_custom_target
调用中添加ALL选项:
add_custom_target(blake ALL
COMMAND ...
)
【讨论】:
当我添加 'ALL' 选项时,cmake 报错:'mkdir: invalid option -- 'r'' 所以,你的命令有问题。请注意,每个新命令都应在前面加上 COMMAND 关键字:与make
不同,CMake
不会自动将换行符视为新命令。 &&
也可以替换为 COMMAND:所有命令都按顺序执行,如果其中任何一个命令失败,则构建将终止。您可以在add_custom_target documentation 找到更多信息。以上是关于使用 cmake 构建外部库的主要内容,如果未能解决你的问题,请参考以下文章