我正在尝试更改 IDE (Xcode) 中的 CMake 目标名称文件夹。我读过的文档说 PROJECT_LABEL 正是这样做的。看来当我应用这个属性时,它在 Xcode 中没有任何影响。是否有其他方法可以在 Xcode 中更改目标名称文件夹,或者只是此 IDE 不支持?
PROJECT_LABEL
属性仅对项目文件中具有单独项目名称字段的项目有效。例如,Visual Studio *.vcxproj 有 <ProjectName>
字段,该字段用于 IDE 中的名称表示,与实际文件名无关。如果使用 Xcode,项目名称来自文件名本身,并且没有选项可以自定义它。
回到您最初的问题,在这种情况下,唯一的选择是重命名项目文件。然而,这里有一个问题,CMake 不支持任何后生成钩子,所以你必须更聪明。本质上,您有 2 个选择:
此问题的答案中很好地描述了这两种方式在 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方法保持一致并避免任何误读