更改cmake生成的项目文件目录

时间:2018-12-18 21:09:06

标签: visual-studio cmake

我找不到任何对我的问题有帮助的问题,所以就在这里(或证明我错了)。

首先:我在Windows下执行所有操作,并且仅针对Visual Studio进行构建。
我的情况:我的主目录包含一个“主” CMakeList。因此,这里是进行cmake调用,它本身并不多:

cmake_minimum_required(VERSION 3.13.1)
project (EulerAdventureReinvented)

if (CMAKE_GENERATOR MATCHES Win64)
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib/Win64/")
    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib/Win64/")
    set(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin/Win64/")
else()
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib/Win32/")
    set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/lib/Win32/")
    set(EXECUTABLE_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/bin/Win32/")
endif()

add_subdirectory(source)

但是它在源目录中添加了另一个CMakeLists,用于执行“主”项目的设置。因此它包含add_executable调用,我想保持这种方式。但是问题在于它确实将vcxproj文件,CMakeFiles目录写入该源目录中,但是我希望将它们放在根目录中,或者...其他地方。

最终问题:我需要为此设置什么?我的意思是我要更改哪个变量。我搜索并发现了很多东西,以至于遇到了反复试验的问题,甚至在其他地方也找不到我的文件。

编辑:为了避免在生成文件和生成文件之间造成混淆,我对标题进行了一些更改。我不想设置构建路径,因为上面的代码已经完成了构建。

1 个答案:

答案 0 :(得分:0)

在CMake 3.13.2中,以下开关可用:

cmake [<options>] -S <path-to-source> -B <path-to-build>

因此,在您上面描述的情况下,它将类似于:

cmake -S . -B .\build

现在,没有用于设置<path-to-build>的变量,但是您可以从CMAKE_BINARY_DIR获取它的信息。您设置的变量控制着工件的结束位置,而不是项目文件的创建位置或中间文件的位置。