C++ CMake添加外部依赖项

C++ CMake添加外部依赖项,c++,visual-studio,cmake,shared-libraries,C++,Visual Studio,Cmake,Shared Libraries,我正在尝试转换一个VisualStudio2013项目,我已经使用了CMake,但是当我包含一个使用一些共享库的源头文件时遇到了问题。在我的原始VS项目属性中的Common properties>References下,我在项目中添加了几个需要的引用。有一些选项,如库的相对路径、一些构建设置等。在我的VS项目文件中生成的XML看起来非常类似于以下内容: <Project> . . . <ItemGroup> <Reference Include="MyL

我正在尝试转换一个VisualStudio2013项目,我已经使用了CMake,但是当我包含一个使用一些共享库的源头文件时遇到了问题。在我的原始VS项目属性中的Common properties>References下,我在项目中添加了几个需要的引用。有一些选项,如库的相对路径、一些构建设置等。在我的VS项目文件中生成的XML看起来非常类似于以下内容:

<Project>
.
.
.
  <ItemGroup>
    <Reference Include="MyLib">
      <HintPath>../lib/MyLib.dll</HintPath>
    </Reference>
    <Reference Include="System">
      <CopyLocalSatelliteAssemblies>true</CopyLocalSatelliteAssemblies>
      <ReferenceOutputAssembly>true</ReferenceOutputAssembly>
    </Reference>
    .
    .
    .
  </ItemGroup>

对于dll路径,我对本地dll使用了相对和绝对两种方式,但我不知道对于系统引用我应该做什么。

你能发布一个(非常)最小的(工作)吗您的cmake文件的示例,以便我们可以看到您尝试了什么?看起来您尝试实现的目标与基本上设置
PATH
环境变量类似,以便可执行文件可以在运行时实际找到dll。如果这是正确的,我不认为CMake实际上有内置的支持(这是非常不幸的)。我正在使用的框架使用CMake生成一个
bat
文件,该文件在运行IDE之前或在运行可执行文件之前设置环境。@RichardHodges我添加了当前CmakeList的最低版本。txt@Rostislav所以你认为这可能只是VisualStudio的一个功能,而在CMake中是不可能的?无法设置要使用的生成路径。我的意思是,当我用内置VS更改DLL的位置时,我的程序不会运行,所以它只是告诉它在哪里查找。没有调用
target\u link\u库(${EXE\u NAME}mylib)
cmake_minimum_required(VERSION 3.0.2)
project(MyProject)
set(EXE_NAME "MyExe")

set(SOURCES
    "src/main.cpp"
    "src/SourceUsingDLL.cpp"
    "src/others.cpp"
)

set(HEADERS
    "include/HeaderUsingDLL.h"
    "include/otherHeaders.h"
)

include_directories(include)

add_executable(${EXE_NAME} ${SOURCES} ${HEADERS})

### What I tried - Didn't work ####
add_library( mylib SHARED IMPORTED )
set_target_properties( mylib PROPERTIES IMPORTED_LOCATION pathToDLL )
target_link_libraries(${EXE_NAME} mylib)