D_E*_*D_E 6 c++ makefile cmake platform-independent
我们正在从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:我已阅读常见问题解答,但我的问题仍在发生,也许有人设法解决了?
为了解决这类问题,我所做的就是围绕 cmake 编写一个小包装器 Makefile。我将Makefile放在项目根目录下,内容如下:
all: cmake
cmake:
    [ -f build/CMakeCache.txt ] && [ "$$(pwd)" != "$$(grep 'CMAKE_HOME_DIRECTORY:INTERNAL' build/CMakeCache.txt | cut -d '=' -f 2)" ] \
&& rm -rf build || true
    mkdir -p build && cd build && cmake ..
    make -C build
clean:
    rm -rf build
可能有一种更干净的方法来做到这一点,但它对我有用:
make # build in one directory
cd ..
olddir=$(basename $OLDPWD) && rsync -ravz $olddir ${olddir}-test && cd ${olddir}-test # copy to another directory
make # running make in the new dir triggers a full rebuild
make # running make a second time in the new dir does not rebuild
| 归档时间: | 
 | 
| 查看次数: | 4716 次 | 
| 最近记录: |