【发布时间】:2014-08-16 13:56:46
【问题描述】:
我们正在从 MPC 迁移到 CMake。 我们提供了一个带有一些示例的库。这些示例随 makefile 一起提供。
问题是由 cmake 生成的 makefile 包含绝对路径而不是相对路径:
# The main all target
all: cmake_check_build_system
cd /.../Projects/cpp_trunk && $(CMAKE_COMMAND) -E cmake_progress_start /.../Projects/cpp_trunk/CMakeFiles /.../Projects/cpp_trunk/samples/CMakeFiles/progress.make
cd /.../Projects/cpp_trunk && $(MAKE) -f CMakeFiles/Makefile2 samples/all
$(CMAKE_COMMAND) -E cmake_progress_start /.../cpp_trunk/CMakeFiles 0
所以,当它被复制时,它就坏了。 有什么办法可以解决吗?
UPD:我已阅读FAQ,但我的问题仍在发生,也许有人设法绕过?
【问题讨论】:
-
您是否打算将您的库中的 Makefile 发送给第三方?在这种情况下,由 CMake 生成的 Makefile 不太适合。也许您可以编写一个专门适合您的示例的简单 Makefile 生成器,这可以使用 CMake 命令或独立工具来完成。
-
@Lindydancer,是的,这就是问题所在。使用 MPC 时,我们无需手动执行任何操作。问题是如何在不使用任何独立工具的情况下生成适合提供给第三方的 Makefile。
-
如果您希望它们都采用标准格式,那么我建议您查看用于写入文件的 CMake 命令,例如
file()并自己写一个,或者您可以使用configure()并让 CMake 填空。如果您编写自己的工具,它可以通过 CMake 使用add_custom_command()启动。不是很好的解决方案,但它适用于您的情况。
标签: c++ makefile cmake platform-independent