我必须将项目构建2次,这是第一次失败,因为它无法打开库

时间:2018-09-11 12:49:50

标签: c++ visual-studio build cmake websocket++

我的问题碰巧是,每次我使用CMake重新生成我的Project并随后尝试使用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)

预先感谢您的帮助

1 个答案:

答案 0 :(得分:0)

为确保在可执行文件之前构建ExternalProject,您需要添加相应的依赖项:

add_dependencies(Test extasio)

类似地,为确保先构建一个ExternalProject,请指定它们之间的依赖关系:

add_dependencies(extwebsocketpp extasio)