小编max*_*xik的帖子

使用 Ninja Generator 为 Windows (clang-cl) 构建的 CMake

我正在尝试使用 CMake 作为主要构建工具在 Windows 机器上构建一个简单的应用程序。一旦在项目上调用 CMake,配置阶段就会出现错误:

> cmake -H. -G Ninja -Bbuild -DCMAKE_C_COMPILER:PATH="C:\Program Files\LLVM\bin\clang-cl.exe" -DCMAKE_CXX_COMPILER:PATH="C:\Program Files\LLVM\bin\clang-cl.exe"

-- The C compiler identification is Clang 7.0.0
-- The CXX compiler identification is Clang 7.0.0
-- Check for working C compiler: C:/Program Files/LLVM/bin/clang-cl.exe
-- Check for working C compiler: C:/Program Files/LLVM/bin/clang-cl.exe --broken
CMake Error at C:/Program Files/CMake/share/cmake-3.12/Modules/CMakeTestCCompile
r.cmake:52 (message):
  The C compiler

    "C:/Program Files/LLVM/bin/clang-cl.exe"

  is not able to compile a simple test program.

  It fails with the following output:

    Change Dir: C:/Users/mak/Desktop/cmake-test/build/CMakeFiles/CMakeTmp

    Run …
Run Code Online (Sandbox Code Playgroud)

cmake ninja clang-cl

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

git filter不是'unmodifying'文件

我正在使用一个IDE,它在一些生成但强烈需要的库文件中生成一个版本.因此,如果我想使用具有多个版本的库,或者我看到一些实际上毫无意义的更改,则会出现问题.

总结:我想忽略一个单一的,我认为Git的过滤器是正确的方法一个或多个文件线.我能够在grep没有问题的情况下找到相关的线路,因为人们可能会看到进一步的阅读.

长话短说,我设置了一个git过滤器来恢复对头文件中版本的任何修改.(请注意,此文件中可能有不同的修改.)

[filter "ignore-version"]
    smudge = cat %f || cat
    clean  = git ls-files %f --error-unmatch >&- 2>&- \
              && sed \"/version/c $(git show HEAD:%f | grep version)\" || cat
Run Code Online (Sandbox Code Playgroud)

(为了更好的阅读,我添加了转义换行符并更改了单词以便简单匹配.在原始版本中没有可能的冲突.)

  1. git ls-files检查文件是否已存在于存储库中(当前为HEAD)

1.1如果存在,sed将进行脏工作以用已经跟踪的线替换整条线

1.2如果没有,cat除了继续之前什么都不做(这应该确保一个尚未跟踪的文件不会丢失)

到目前为止,它的确有效.(我可以忍受这样一个事实,即过滤器将所有CRLF静默转换为LF ......)

问题:固定文件被​​git标记为已修改,尽管存储库的最新文件和过滤版本是二进制相等的.我使用kdiff作为单独的工具检查了这个.


编辑1:这是一些输出,显示两个文件版本的相等性:

$ git show HEAD:file.txt | md5sum
9f95c28cebe4f45b8efb7b0ae64dfa56
$ cat file.txt | md5sum
894e7d1b28180b7a193bf3cdd6ceaacb
$ cat file.txt | git ls-files file.txt --error-unmatch …
Run Code Online (Sandbox Code Playgroud)

git sed git-filter

5
推荐指数
1
解决办法
262
查看次数

标签 统计

clang-cl ×1

cmake ×1

git ×1

git-filter ×1

ninja ×1

sed ×1