使用cmake将* .algspec类型的所有文件包含到项目文件夹中的项目中

时间:2014-08-05 17:03:41

标签: opencv cmake

我正在使用cmake为我们的项目生成visual studio解决方案文件。

结构是

/CmakeLists.txt
/include/
/src/
/file1.algspec
/file2.algspec
/file3.algspec

我在下面包含了我当前的cmakelists文件。 (注意它是一个opencv模块,所以如果opencvs cmake中有任何东西有帮助,可以使用。

我希望它将上面列出的文件夹结构中algspec类型的所有文件都包含在一个项目文件夹中,就像opencv正在为include和src文件做的那样。文件夹名称可以是“specs”

set(the_description "Ascend OpenCV Features")

ocv_define_module(ascend_features opencv_highgui opencv_features2d)


set_target_properties(${PROJECT_NAME} PROPERTIES VS_DOTNET_REFERENCES "System;System.Core")
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/clr /EHa")
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "d")

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /AI\"C:\\dev\\ascendprojects\\Ascend Azure Pipeline\\Ascend.Algorithms\\Ascend.Algorithms.Interface\\bin\\x64\\Release\" ")

if(CMAKE_CXX_FLAGS_DEBUG MATCHES "/RTC1")
   string(REPLACE "/RTC1" " " CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
endif()

if(CMAKE_CXX_FLAGS MATCHES "/EHsc")
   string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endif()




message(STATUS ${the_module})

如果可能的话,也可以更新我的cmakeslist以使它导入的dll导入到可以在cmake gui中设置的设置。否则这将是一个新问题。

1 个答案:

答案 0 :(得分:0)

这是解决方案。

没有办法让他们进入文件夹

set(the_description "Ascend OpenCV Features")


macro(ocv_get_module_external_sources)
    file(GLOB SPECS "*.algspec")
    set(__filesvar "OPENCV_MODULE_${the_module}_HEADERS")
    list(APPEND ${__filesvar} ${SPECS} )    
endmacro()

ocv_define_module(ascend_features opencv_highgui opencv_features2d opencv_nonfree)


set_target_properties(${PROJECT_NAME} PROPERTIES VS_DOTNET_REFERENCES "System;System.Core")
set_target_properties(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "/clr /EHa")
set_target_properties(${PROJECT_NAME} PROPERTIES DEBUG_POSTFIX "d")

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /AI\"C:\\dev\\ascendprojects\\Ascend Azure Pipeline\\Ascend.Algorithms\\Ascend.Algorithms.Interface\\bin\\x64\\Release\" ")

if(CMAKE_CXX_FLAGS_DEBUG MATCHES "/RTC1")
   string(REPLACE "/RTC1" " " CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
endif()

if(CMAKE_CXX_FLAGS MATCHES "/EHsc")
   string(REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
endif()


message(STATUS ${the_module})