cmake:使用ExternalProject_Add并指定输出文件夹

时间:2017-03-30 11:51:55

标签: cmake external-project

我目前正在使用一个CMakeLists.txt文件来执行外部CMakeLists.txt(和依赖项)。

为此,我使用了ExternalProject_Add命令,但是我无法找到一种方法来指定" .sln"文件将被生成。

这是我使用的命令:

include(ExternalProject)
set(LIBRARY_SOURCE_DIR C:/Library)
ExternalProject_Add(Library
  SOURCE_DIR        "${LIBRARY_SOURCE_DIR}"
  CMAKE_ARGS
      -DCMAKE_BUILD_TARGET_ANDROID:BOOL=ON
      -DCMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS} 
      -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} 
      -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
      -DCMAKE_CONFIGURATION_TYPES=${CMAKE_CONFIGURATION_TYPES}
      -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE}
      -G@CMAKE_GENERATOR@
  BUILD_COMMAND     ""
)

所以,我正在寻找一种在此调用中直接指定它的方法。有什么想法吗?

我也试过了,但没办法:

  PREFIX            LibraryBuild
  SOURCE_DIR        "${LIBRARY_SOURCE_DIR}"
  BINARY_DIR        "${LIBRARY_SOURCE_DIR}/LibraryBuild"
  INSTALL_DIR       "${LIBRARY_SOURCE_DIR}/LibraryBuild"
  BUILD_COMMAND     "cmake --build ./LibraryBuild"
  CMAKE_ARGS
      -DCMAKE_RUNTIME_OUTPUT_DIRECTORY="./LibraryBuild"
      -DCMAKE_LIBRARY_OUTPUT_DIRECTORY="./LibraryBuild"
      -DCMAKE_EXECUTABLE_OUTPUT_DIRECTORY="./LibraryBuild"
      "./LibraryBuild"
      -DCMAKE_CURRENT_BINARY_DIR="./LibraryBuild"
      -DCMAKE_GENERATOR="Visual Studio 15 2017 Win64"

1 个答案:

答案 0 :(得分:0)

请给它BINARY_DIR,但不要给它BUILD_COMMAND。给它一个空BUILD_COMMAND意味着"什么都不做"用于构建步骤并使用" cmake --build ./LibraryBuild"除非cmake在你的PATH中,并且使用Visual Studio解决方案,你还需要指定" - config Release"或" - config Debug"。

如果完全放弃BUILD_COMMAND用于CMake驱动的项目,CMake将为使用的CMAKE_GENERATOR生成正确的默认构建命令。

此外,我强烈建议您为BINARY_DIRINSTALL_DIR使用不同的值。它们不应重叠。我建议您将INSTALL_DIR作为BINARY_DIR的子目录或兄弟目录,如果它不是规范安装(即" / usr"或" C:/ Program Files ...")