1

我目前正在使用一个 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"
4

1 回答 1

0

给它一个BINARY_DIR,但不要给它一个BUILD_COMMAND。给它一个空BUILD_COMMAND意味着对构建步骤“什么都不做”并且使用“cmake --build ./LibraryBuild”不起作用,除非cmake在你的PATH中,并且使用Visual Studio解决方案,你还需要指定“--config发布”或“--config 调试”。

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

另外,我强烈建议您对BINARY_DIR和使用不同的值INSTALL_DIR。它们不应重叠。如果不是规范安装,我建议您创建INSTALL_DIR一个子目录或同级目录(即在“/usr”或“C:/Program Files...”下)BINARY_DIR

于 2017-03-30T14:16:42.523 回答