Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 有没有办法检测程序';cmake中的s版本?_C++_Cmake_Clang Format - Fatal编程技术网

C++ 有没有办法检测程序';cmake中的s版本?

C++ 有没有办法检测程序';cmake中的s版本?,c++,cmake,clang-format,C++,Cmake,Clang Format,我尝试使用clang格式来格式化我的cpp项目。我的cmake文件如下所示: ... find_program(CLANG_FORMAT_BIN_NAME NAMES clang-format-3.8 PATH /usr/bin/) if(NOT CLANG_FORMAT_BIN_NAME-NOTFOUND) file(GLOB_RECURSE ALL_SOURCE_FILES *.cc *.h) add_custom_target( clang-for

我尝试使用clang格式来格式化我的cpp项目。我的cmake文件如下所示:

... 
find_program(CLANG_FORMAT_BIN_NAME NAMES clang-format-3.8 PATH /usr/bin/)
if(NOT CLANG_FORMAT_BIN_NAME-NOTFOUND)
    file(GLOB_RECURSE ALL_SOURCE_FILES *.cc *.h)
    add_custom_target(
            clang-format
            COMMAND ${CLANG_FORMAT_BIN_NAME}
            -style=google
            -i
            ${ALL_SOURCE_FILES}
    )
endif()
... 
当我使用
makeclangformat
时,一切都很顺利。现在让我们更进一步,我想使用clang格式,但不指定其确切版本。有没有办法实现这个目标?我试图更改我的CMakeLists.txt,如下所示:

find_program(CLANG_FORMAT_BIN_NAME NAMES clang-format-* PATH /usr/bin/)
if(NOT CLANG_FORMAT_BIN_NAME-NOTFOUND)
    file(GLOB_RECURSE ALL_SOURCE_FILES *.cc *.h)
    add_custom_target(
            clang-format
            COMMAND ${CLANG_FORMAT_BIN_NAME}
            -style=google
            -i
            ${ALL_SOURCE_FILES}
    )
endif()

但它不起作用。

您可以使用
GLOB
/usr/bin/
CMAKE\u FIND\u ROOT\u PATH
目录中进行通配符搜索(该目录是
FIND\u program
使用的),然后可以将找到的版本传递到
find_program
中,如果需要的话
find_program
相应地设置变量。CMake-way可以在
names
子句中枚举所有可能的可执行名称:
names clang-format-3-8 clang-format-3-7 clang-format-3-6
。(可以使用
list(TRANSFORM PREPEND>“clang format-”)
从已知版本列表中创建名称列表)感谢您的回答。最后,我使用
文件(GLOB-CLANG\u-FORMAT\u-BIN\u-NAME/usr/BIN/CLANG-FORMAT-[0-9]*)
来解决我的问题。