gpt4 book ai didi

CMake 可执行文件位置

转载 作者:行者123 更新时间:2023-12-03 20:18:54 29 4
gpt4 key购买 nike

我有一个非常简单的目录结构:

Project
Project/src
Project/build

源文件在 Project/src ,并且我在 Project/build 中进行了 src 外构建.运行后 cmake ../ ; make ,我可以这样运行可执行文件: Project/build$ src/Executable - 即 Executable是在 build/src 中创建的目录。

如何在 CMakeLists.txt 中设置可执行文件的位置文件?我试图遵循在 cmake.org 中找到的一些示例。 ,但有效的链接似乎没有显示这种行为。

我的 Project/src/CMakeLists.txt文件在此处列出。

include_directories(${SBSProject_SOURCE_DIR}/src)
link_directories(${SBSProject_BINARY_DIR}/src)

set ( SBSProject_SOURCES
main.cpp
)

add_executable( TIOBlobs ${SBSProject_SOURCES})

和顶级 Project/CMakeLists.txt :

cmake_minimum_required (VERSION 2.6)
project (SBSProject)

set (CMAKE_CXX_FLAGS "-g3 -Wall -O0")

add_subdirectory(src)

最佳答案

你有几个选择。

要更改可执行文件的默认位置,请设置 CMAKE_RUNTIME_OUTPUT_DIRECTORY到所需的位置。例如,如果您添加

set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

给您的 Project/CMakeLists.txt 之前 add_subdirectory命令,您的可执行文件将在 Project/build 中结束对于 Unix 版本或 build/<config type>对于 Win32 版本。有关更多详细信息,请运行:
cmake --help-property RUNTIME_OUTPUT_DIRECTORY

这种规模的项目的另一种选择是只有一个 CMakeLists.txt。您或多或少可以替换 add_subdirectory(src)Project/src/CMakeLists.txt 的内容实现相同的输出路径。

但是,还有一些进一步的问题。

您可能希望避免使用 link_directories一般来说。有关解释,请运行
cmake --help-command link_directories

即使您确实使用了 link_directories ,不太可能在 ${SBSProject_BINARY_DIR}/src 中找到任何库

另一个问题是 CMAKE_CXX_FLAGS适用于 Unix 版本,所以应该被包裹在 if (UNIX) ... endif() 中堵塞。当然,如果你不打算在 Unix 以外的任何东西上构建,这不是问题。

最后,我建议至少需要 CMake 2.8,除非您必须使用 2.6 - CMake 是一个积极开发的项目,当前版本比 2.6 有许多重大改进

所以单个替换 Project/CMakeLists.txt可能看起来像:
cmake_minimum_required (VERSION 2.8)
project (SBSProject)

if (UNIX)
set (CMAKE_CXX_FLAGS "-g3 -Wall -O0")
endif ()

include_directories (${SBSProject_SOURCE_DIR}/src)

set (SBSProject_SOURCES
${SBSProject_SOURCE_DIR}/src/main.cpp
)

add_executable (TIOBlobs ${SBSProject_SOURCES})

关于CMake 可执行文件位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9345792/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com