C++ 有没有办法检测程序';cmake中的s版本?
我尝试使用clang格式来格式化我的cpp项目。我的cmake文件如下所示: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
...
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]*)
来解决我的问题。