CMake-从cmd行进行构建时,iOS编译选项丢失了

时间:2019-11-22 10:42:36

标签: c++ ios cmake

我是CMake的新手,我正在尝试为所有iOS平台交叉构建C可执行文件。 所以,我写了如下的CMakeLists.txt

cmake_minimum_required(VERSION 3.15.2)

project(myProject C)

set_property(GLOBAL PROPERTY USE_FOLDERS YES)

set(MY_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/my_source_file.c)

set(MY_INCLUDES ${CMAKE_CURRENT_SOURCE_DIR}/include)

add_library(myTarget STATIC ${MY_SOURCES})

target_include_directories(myTarget PRIVATE ${MY_INCLUDES})

target_compile_options(myTarget PUBLIC -Werror -Wall)

然后,我启动CMake配置阶段,在源代码树之外创建一个构建文件夹,然后执行命令

cmake -G Xcode  -DCMAKE_SYSTEM_NAME=iOS -S my_source_dir_path -B .

一切似乎都很好,在Build树中创建了一个Xcode项目文件。如果我使用XCode打开它并从此IDE进行构建,则实际上会使用“ -Werror”和“ -Wall”标志进行编译。 相反,如果我输入

cmake --build . --config Release
从同一Build树目录中的

,从控制台上出现的输出中,我看到用于标志的标志与CMake文件和生成的XCode项目文件中的标志完全不同。这是给定翻译单元的编译器输出的摘录

    ...
        /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x c -target arm64-apple-ios13.1 -fmessage-length=171 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -fcolor-diagnostics -Wno-trigraphs -fpascal-strings -O3 -Wno-missing-field-initializers -Wno-missing-prototypes -Wno-return-type -Wno-missing-braces 
    -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wno-unused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion 
-Wno-objc-literal-conversion -Wshorten-64-to-32 -Wpointer-sign -Wno-newline-eof
    ...

因此,我的目标编译选项似乎正在被覆盖... 有什么想法吗? 预先感谢

0 个答案:

没有答案