标签: compiler-flags

xcodebuild 可以删除项目的Build Folder 的内容吗?

回到 Xcode 9,有一个名为“Clean Build Folder...” ( ???K)的构建选项,它删除了构建文件夹中的所有文件,只留下没有内容的文件夹。从那时起,此行为被删除,菜单项的标题更改为“Clean Build Folder”,现在表现得像以前的“Clean”。

xcodebuild有一个名为的构建选项clean,它与 Xcode 的“Clean Build Folder” ( ??K)做同样的事情,它会留下一些东西。

有没有办法通过可编写脚本的命令删除构建文件夹中的所有文件?


到目前为止我尝试过的:

xcodebuild clean -workspace "My Workspace.xcworkspace" -scheme "My Scheme"
Run Code Online (Sandbox Code Playgroud)

正如我所说,这实际上并没有清理所有内容。为此,我将这个 bodge 添加到我的构建脚本中:

export IS_XCODE_CACHE_FOLDER_PRESENT="`ls -la ~/Library/Developer/ | grep -x "Xcode"`"

if [ 0 -ne "$IS_XCODE_CACHE_FOLDER_PRESENT" ]; then
    echo "Xcode cache folder should not be present at build time! Attempting to delete..."
    rm -rf "~/Library/Developer/Xcode"
    RM_RESULT=$?
    if [ 0 -ne "$RM_RESULT" ]; then
        echo …
Run Code Online (Sandbox Code Playgroud)

xcodebuild compiler-flags

7
推荐指数
1
解决办法
2286
查看次数

C++“功能测试宏”的值是什么意思?

为了测试某个功能, cppreference 提到了这些功能测试宏: link

如果编译器中存在该功能,则定义宏。但我不明白为什么,如果定义了,它们会被定义为类似的东西201606,我相信这是C++ 的版本,而不是编译器的版本

例如,我正在使用 GCC 的最新版本来实现-std=c++17该功能__cpp_lib_hardware_interference_size。该宏未定义,我认为这意味着 GCC 没有该功能,尽管尝试使用 c++17(和 c++2a)开关 8.2.1。在这种情况下,记录值的意义是什么:

__cpp_lib_hardware_interference_size 201703

(在 cppreference 链接内)?

c++ gcc compiler-flags dialect

7
推荐指数
1
解决办法
2192
查看次数

当我用程序编译它时 -Wall 标志会做什么?

我正在遵循一个教程,该教程介绍了如何使用 gprof 分析程序,给出的命令如下

gcc -Wall -pg test_gprof.c test_gprof_new.c -o test_gprof

但它没有对这个标志给出任何解释(-Wall)

gcc compilation compiler-flags gprof

7
推荐指数
1
解决办法
8305
查看次数

clang++ 的选项 -fno-strict-enums 有什么作用?

两个月前,我报作为一个clang++错误,那下面套C ++程序z,以4294967295在编译时clang++ -O2 -fno-strict-enums

enum e { e1, e2 } e;

long long x, y, z;

char *p;

void f(void) {
    e = (enum e) 4294967295;
    x = (long long) e;
    y = e > e1;
    z = &p[e] - p;
}
Run Code Online (Sandbox Code Playgroud)

由于程序未定义,我的错误报告因无效而关闭。我的感觉是使用该选项-fno-strict-enums使其定义。

据我所知,Clang 没有名副其实的文档,因为它的目标是在它接受的选项及其含义方面与 GCC 兼容。我读了 GCC 的选项文档-fno-strict-enums说程序应该将值设置z-1

-fstrict-枚举

允许编译器使用以下假设进行优化:枚举类型的值只能是枚举值之一(如 C++ 标准中所定义;基本上,可以用最少位数表示的值来表示所有枚举器)。如果程序使用强制转换将任意整数值转换为枚举类型,则此假设可能无效。

请注意,仅记录了该选项-fstrict-enums,但似乎很清楚-fno-strict-enums禁用-fstrict-enums启用的编译器行为。我无法针对 GCC 的文档提交错误,因为生成设置z为的二进制文件, …

c++ enums compiler-flags clang++

7
推荐指数
1
解决办法
178
查看次数

什么旗帜让GCC警告文件结尾没有新行?

我刚读过这篇关于为什么存在新线警告的帖子,但说实话,我的团队让人们在几个不同的平台上工作,并且有几个不同的编辑(每个人都使用最好的套件),所以警告已经无处不在,并且因为它的不是真的值得注意它的警告会变成噪音,并且会发现严重的警告是一件麻烦事.

很多时候重要的警告都没有引起注意,因为人们已经习惯了无数的无用警告经过,所以他们显然只是停止仔细观察它们,并且有理由恕我直言.有人可以说,在我们的案例中,海湾合作委员会正在哭泣狼太多,任何人都不再认真对待它,这是一种恶劣的态度,但它只是人性.

现在我们编译-Wall,因为我们想要警告,但有一个计数器标志,以避免新行警告?

注意:我看了一下手册,但在任何明显的地方找不到答案,所以我放弃了.

注意:为了回应Robert Gamble完全合理的解决方案,我们的代码是跨平台的,我们的人员和构建基于Linux,Solaris和Windows,所以新线......没有达成共识.有人的编译器总是会哭泣.因为有超过40名开发人员,以及其他非程序员工.

gcc warnings compiler-flags

6
推荐指数
2
解决办法
7640
查看次数

Visual Studio C++编译器标志:什么是-Zm200?

我使用Qt进行C++开发,今天我从.pro文件中生成了一个.vcproj文件.

我注意到在vcproj项目属性下,Qt将此标志添加到C/C++ - >命令行 - >其他选项

-Zm200 
Run Code Online (Sandbox Code Playgroud)

什么是-Zm200?

compiler-flags visual-studio-2008

6
推荐指数
1
解决办法
9659
查看次数

在共享库中混合PIC和非PIC对象

这个问题关系到这一个,以及它的答案.

我刚刚发现了一些正在构建的构建中的丑陋.情况看起来有点像以下(用gmake格式编写); 请注意,这特别适用于sparc和x86硬件上的32位内存模型:

OBJ_SET1  := some objects
OBJ_SET2  := some objects

# note: OBJ_SET2 doesn't get this flag
${OBJ_SET1} : CCFLAGS += -PIC

${OBJ_SET1} ${OBJ_SET2} : %.o : %.cc
  ${CCC} ${CCFLAGS} -m32 -o ${@} -c ${<}

obj1.o       : ${OBJ_SET1}
obj2.o       : ${OBJ_SET2}
sharedlib.so : obj1.o obj2.o
obj1.o obj2.o sharedlib.so :
  ${LINK} ${LDFLAGS} -m32 -PIC -o ${@} ${^}
Run Code Online (Sandbox Code Playgroud)

显然,它可以在共享对象中混合使用和不使用PIC编译的对象(这已经使用了多年).我不太了解PIC是否知道这是一个好主意/聪明,而我的猜测是在这种情况下它不是必需的,而是它正在发生,因为有人不在乎找到正确的方法来做到这一点关于构建的新东西.

我的问题是:

  1. 这样安全吗?
  2. 这是不是一个好主意
  3. 结果会发生什么样的潜在问题
  4. 如果我将所有内容切换到PIC,是否有任何非显而易见的陷阱我可能需要注意.

compiler-flags sunstudio

6
推荐指数
1
解决办法
2637
查看次数

在python代码中使用f2py模块时出现的问题

我有一个FORTRAN代码,需要以下编译命令

gfortran -c interp.f -ffixed-format -ffix-line-length-none
Run Code Online (Sandbox Code Playgroud)

我在python中使用f2py模块编译了相同的内容

from numpy import f2py

f2py.compile(open('interp.f').read(),modulename='interp',extra_flags='-ffixed-format -ffix-line-length-none',verbose=0)
Run Code Online (Sandbox Code Playgroud)

它无法编译模块.它出现错误,指出无效的文件格式''at'ffize-format'

请帮忙

python fortran compilation compiler-flags f2py

6
推荐指数
1
解决办法
559
查看次数

在Swift中使用编译器变量

在Objective-C中,我在构建设置 - >其他C标志中设置了一堆编译器标志,这些标志正在代码中使用.例如:

Flag => -DPortNumber = 1

在代码中我能够访问它 @(PortNumber)

这在Swift中不起作用,我无法找到答案.

compiler-flags swift

6
推荐指数
1
解决办法
2200
查看次数

我可以使用哪些进行曲/音乐选择?

有没有办法让gcc输出可用的-march = arch选项?我遇到构建错误(尝试过-march=x86_64),我不知道我的选择是什么。

我使用的编译器是gcc似乎不喜欢的专有包装-march=skylake。标志应该是相同的,因此我假设要发送给gcc的所有选项以转储体系结构对于此包装器来说都是相同的。

我设法使gcc使用伪造的参数出错,并转储了一个列表,但是现在我正在通过包装器,所以我看不到它。

如何让gcc告诉我它支持什么?

x86 command-line gcc compiler-flags micro-architecture

6
推荐指数
2
解决办法
1517
查看次数