Makefile Cmake add_custom_命令中的双斜杠导致“无规则生成”错误

Makefile Cmake add_custom_命令中的双斜杠导致“无规则生成”错误,makefile,cmake,Makefile,Cmake,以下内容不是使用CMake 2.8.3为我编译的。注意//是由DIR变量的尾部斜杠引起的。如果删除尾随斜杠,它将编译 有人知道这是CMake或Make中的错误,还是用户错误 谢谢 CMakeLists.txt: 控制台: 此代码有几处错误: 您正在add_custom_命令中使用shell redirection>,但您指定了逐字标记,该标记不通过shell处理 您没有将路径括在引号中,如果路径包含空格、setDIR。。。应该是:setDIR${CMAKE\u CURRENT\u SOURCE\

以下内容不是使用CMake 2.8.3为我编译的。注意//是由DIR变量的尾部斜杠引起的。如果删除尾随斜杠,它将编译

有人知道这是CMake或Make中的错误,还是用户错误

谢谢

CMakeLists.txt:

控制台:


此代码有几处错误:

您正在add_custom_命令中使用shell redirection>,但您指定了逐字标记,该标记不通过shell处理

您没有将路径括在引号中,如果路径包含空格、setDIR。。。应该是:setDIR${CMAKE\u CURRENT\u SOURCE\u DIR}/

您正在源目录树中创建文件;CMake通常与源代码外生成一起使用,因此应在生成树中创建临时文件

您可以使用fileWRITE创建文件,这比调用shell要快

缺少所需的cmake_最小值

修复了CMakeLists.txt:

    SET(DIR ${CMAKE_CURRENT_SOURCE_DIR}/)
    FILE(MAKE_DIRECTORY ${DIR})

    ADD_CUSTOM_COMMAND(
            OUTPUT ${DIR}/test.cc
            COMMAND echo "int main(void) { }" > ${DIR}/test.cc
            VERBATIM
    )

    ADD_EXECUTABLE(test ${DIR}/test.cc)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/sam/tmp
Scanning dependencies of target test
make[2]: *** No rule to make target `test.cc', needed by `CMakeFiles/test.dir/test.o'.  Stop.
make[1]: *** [CMakeFiles/test.dir/all] Error 2
make: *** [all] Error 2
cmake_minimum_required(VERSION 2.8)

set(DIR "${CMAKE_CURRENT_BINARY_DIR}")

file(MAKE_DIRECTORY "${DIR}")
file(WRITE "${DIR}/test.cc" "int main(void) {}")

add_executable(test "${DIR}/test.cc")