PROJECT_LABEL CMake 和 Xcode

问题描述 投票:0回答:1

我正在尝试更改 IDE (Xcode) 中的 CMake 目标名称文件夹。我读过的文档说 PROJECT_LABEL 正是这样做的。看来当我应用这个属性时,它在 Xcode 中没有任何影响。是否有其他方法可以在 Xcode 中更改目标名称文件夹,或者只是此 IDE 不支持?

xcode cmake
1个回答
0
投票

PROJECT_LABEL
属性仅对项目文件中具有单独项目名称字段的项目有效。例如,Visual Studio *.vcxproj 有
<ProjectName>
字段,该字段用于 IDE 中的名称表示,与实际文件名无关。如果使用 Xcode,项目名称来自文件名本身,并且没有选项可以自定义它。

回到您最初的问题,在这种情况下,唯一的选择是重命名项目文件。然而,这里有一个问题,CMake 不支持任何后生成钩子,所以你必须更聪明。本质上,您有 2 个选择:

  • 调用 CMake 的父脚本必须进行项目重命名
  • 嵌套 CMake 调用

此问题的答案中很好地描述了这两种方式在 CMake 中的生成步骤后运行命令

第二个选项可能看起来更容易,但请注意,在具有很多选项的复杂调用的情况下,您可能会无意中丢失一些标志,因此在某些时候变得难以遵循并且不那么通用。以下是您的情况的示例:

project(MyProjectWithPostGeneratorStep)

option(MAIN_ACTION "Flag to differentiate main and post calls" OFF)
if(NOT MAIN_ACTION)
    execute_process(COMMAND ${CMAKE_COMMAND}
        -G "${CMAKE_GENERATOR}"
        -T "${CMAKE_GENERATOR_TOOLSET}"
        -A "${CMAKE_GENERATOR_PLATFORM}"
        -B "${CMAKE_BINARY_DIR}"
        -S "${CMAKE_SOURCE_DIR}"
        -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} 
        -DMAIN_ACTION:BOOL=ON 
        ${CMAKE_SOURCE_DIR})
    
    message(STATUS "Postbuild action")
    file(RENAME "${CMAKE_BINARY_DIR}/${PROJECT_NAME}.xcodeproj" "${CMAKE_BINARY_DIR}/newname.xcodeproj")
    return()
endif()

message(STATUS "Main action")
...

附注我需要说

PROJECT_LABEL
文档不够清晰,我真的不知道是否有其他项目类型支持这一点,我相信它必须命名为
VS_PROJECT_NAME
才能与现有的CMake方法保持一致并避免任何误读

© www.soinside.com 2019 - 2024. All rights reserved.