CMake无法确定目标的链接器语言:azurestorage错误

时间:2017-03-27 01:14:34

标签: c++ azure cmake

我是C ++编程的新手,并且在使用CMake将azure-storage-cpp存储库添加到我的VS解决方案时遇到了一些麻烦。

当我尝试构建azure存储项目时,这是我在VS中遇到的构建错误。

  

CMake无法确定目标的链接器语言:azurestorage

这是我的CMake条目:

ExternalProject_Add( azurestorage
  PREFIX azurestorage
  GIT_REPOSITORY https://github.com/Azure/azure-storage-cpp.git
  GIT_TAG master
  SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../azurestorage
  SOURCE_SUBDIR Microsoft.WindowsAzure.Storage)

我尝试将SET_TARGET_PROPERTIES(azurestorage PROPERTIES LINKER_LANGUAGE CXX)添加到我的CMakeList.txt文件中,但它没有帮助。我还在其他论坛上读到,repo需要在根目录中有一个.cpp和.h文件,以便CMake知道哪种语言。但是由于azure-storage-cpp repo不是我的,我没有能力添加这些文件。

我在Windows10上使用VS2015

我做错了什么?任何和所有的帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我已尝试过您的示例,相关的错误消息更多地是CMake输出的顶部:

-- Unsupported Build Platform.

因此,如果您想添加它,请不要使用ExternalProject_Add()。包含CMakeLists.txt的图书馆适用于Unix/Linux/OSX

但它带有VS2015的现有.vcproj,您可以使用include_external_msproject()将其包含在项目中:

find_package(Git REQUIRED)
execute_process(
    COMMAND "${GIT_EXECUTABLE}" clone https://github.com/Azure/azure-storage-cpp.git
)
set(NUGET_EXECUTABLE "${CMAKE_CURRENT_BINARY_DIR}/azure-storage-cpp/tools/NuGet.exe")
execute_process(
    COMMAND "${NUGET_EXECUTABLE}" restore "azure-storage-cpp/Microsoft.WindowsAzure.Storage.v140.sln" 
)
include_external_msproject(
    azurestorage 
    "azure-storage-cpp/Microsoft.WindowsAzure.Storage/Microsoft.WindowsAzure.Storage.v140.vcxproj"
)