我的问题恰巧是,每当我用CMake重新生成我的项目并尝试使用VisualStudio构建它时,它需要2次尝试,第一次总是失败,因为一个无法打开的库,但是已经在那了。我第二次建造它,它完美无瑕。
我想这是因为我让VisualStudio自动拉动并包含该库,而我的CMake文件中的某些内容顺序错误,但我真的不知道。
这是包含Asio和Websocket ++到项目中的CMake代码,VS无法打开的文件是最后一行中的Asio.lib文件。 Websocket ++需要Asio才能运行。
ADD_DEFINITIONS(-DASIO_STANDALONE )
ADD_DEFINITIONS(-D_WEBSOCKETPP_CPP11_RANDOM_DEVICE_)
ADD_DEFINITIONS(-D_WEBSOCKETPP_CPP11_TYPE_TRAITS_)
Include(ExternalProject)
ExternalProject_Add(extasio
GIT_REPOSITORY https://github.com/tobiasrau/asio.git
GIT_TAG cmake)
ExternalProject_Add(extwebsocketpp
GIT_REPOSITORY https://github.com/TobiasPiontek/websocketpp.git)
include_directories(${EXTERNAL_INSTALL_LOCATION}/include "build/extwebsocketpp-prefix/src/extwebsocketpp/install/include" "build/extasio-prefix/src/extasio/include")
target_link_libraries(Test ${CMAKE_SOURCE_DIR}/build/extasio-prefix/src/extasio/lib/asio.lib)
提前谢谢你的帮助
为了确保在可执行文件之前构建ExternalProject
,您需要添加相应的依赖项:
add_dependencies(Test extasio)
同样,为了确保在另一个之前构建一个ExternalProject
,请指定它们之间的依赖关系:
add_dependencies(extwebsocketpp extasio)