0
我有我的CMake文件中的代碼來獲得SVN版本信息,並將其推入一個定義,我的項目可以使用:添加SVN版本信息源代碼(CMake的)
find_package(Subversion)
if(SUBVERSION_FOUND)
Subversion_WC_INFO(${CMAKE_CURRENT_SOURCE_DIR} MyProj)
target_compile_definitions(MyProj PUBLIC "-DSVN_RC=${MyProj_WC_REVISION}")
endif(SUBVERSION_FOUND)
這將使用中發現宏在默認的CMake分配中。這實際上是宏所做的:
macro(Subversion_WC_INFO dir prefix)
execute_process(COMMAND ${Subversion_SVN_EXECUTABLE} info ${dir}
OUTPUT_VARIABLE ${prefix}_WC_INFO
ERROR_VARIABLE Subversion_svn_info_error
RESULT_VARIABLE Subversion_svn_info_result
OUTPUT_STRIP_TRAILING_WHITESPACE)
if(NOT ${Subversion_svn_info_result} EQUAL 0)
message(SEND_ERROR "Command \"${Subversion_SVN_EXECUTABLE} info ${dir}\" failed with output:\n${Subversion_svn_info_error}")
endif()
endmacro()
我的問題是,此代碼失敗。我的配置輸出如下:
CMake Error at C:/msys64/mingw32/share/cmake-3.8/Modules/FindSubversion.cmake:99 (message):
Command "C:/msys64/usr/bin/svn.exe info
C:/msys64/home/stew/proj"
failed with output:
svn: warning: W155010: The node '/home/stew/proj/build/C:/msys64/home/stew/proj/' was not found.
svn: E200009: Could not display info for all targets because some targets don't exist
我認爲問題是我的msys環境,這是一種假根環境。 svn info /home/stew/proj
工作,而svn info c:/msys64/home/stew/proj
不起作用。 ${CMAKE_CURRENT_SOURCE_DIR}
給了我這個svn問題的windows路徑。有沒有辦法將Windows格式的`$ {CMAKE_CURRENT_SOURCE_DIR}輸出轉換爲fakeroot格式?如果沒有,是否有辦法強制SVN接受其他路徑?
確保您的路徑設置正確。 'find_package(Subversion)'對我來說是失敗的(通過QtCreator運行),所以我不得不手動設置路徑。 – AlastairG