小编Jee*_*eet的帖子

如何让CMake在系统路径上使用默认编译器?

目前,我从我的构建目录中调用CMake,如下所示:

CXX ="/ opt/gcc-4.8/bin/g ++"cmake ..

让CMake使用这个特定的编译器.否则它使用操作系统默认编译器.

我的PATH /opt/gcc-4.8/bin在其他一切方面都有" ".那么,而不是预先设置环境变量是否有办法在"`CMakeLists.txt"文件中指定在路径上使用默认的g ++?

compiler-construction cmake

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

用于C++ 11的Vim语法高亮度,不会破坏其他突出显示.例如,类/命名空间范围

我知道这个脚本:http://www.vim.org/scripts/script.php?script_id = 3797.有人建议过几次,关于Vim的C++ 11语法的其他问题已经因为重复这个问题而被关闭:是否有一个用于vim的C++ 11语法文件?.

不幸的是,建议的脚本导致范围构造(例如"namespace :: member()")不再被突出显示,并且不再突出显示函数和类名.

现在有人为Vim提供更好的C++ 11插件吗?理想情况下,保留常规C++插件的所有功能,标记新关键字/保留字(例如nullptr),lambda表达式/通用初始化语法不标记为错误.等等

c++ syntax vim plugins c++11

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

使用"@"与"$ {}"进行CMake变量扩展

考虑以下:

SET(TEST_DIR, "test")
INSTALL(PROGRAMS scripts/foo.py DESTINATION ${TEST_DIR})
INSTALL(PROGRAMS scripts/foo.py DESTINATION @TEST_DIR@)
Run Code Online (Sandbox Code Playgroud)

第一个INSTALL命令不起作用.第二个.这是为什么?这两者有什么区别?@@除了在创建配置文件的上下文中,我没有找到任何对扩展的引用.其他一切只使用${}扩展.

更新:好的,上面的明显错误.我的SET()命令有一个无关的逗号.删除它,使它看起来像:

    SET(TEST_DIR "test")
Run Code Online (Sandbox Code Playgroud)

导致两者@@${}扩展工作.仍然想知道(a)@@相反的含义是什么${},以及为什么只有前者与我的错误SET()陈述一起工作.

variables cmake expansion

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

在 Vim 中对光标下的单词进行拼写检查

我想要一种在 Vim 中快速检查光标下单词拼写的方法。

在本机 Vim 中执行此操作需要我:

(1) 激活拼写 (2) 检查单词 (3) 停用拼写

(1) 和 (3) 的原因是我不希望始终打开拼写模式(例如,我可能正在编写函数/类文档,并且不希望拼写突出显示代码中的非自然语言单词) 。

我认为这样的事情可能会起作用:

nnoremap <F1> :setlocal spell<CR>z=:setlocal nospell<CR>
Run Code Online (Sandbox Code Playgroud)

但是,当然,最后一个子句 ( :setlocal nospell) 会干扰并取消拼写检查。

我也尝试了以下方法,但这也不起作用:

function! s:spell_check_current()
  :setlocal spell
  :normal("z=")
  :setlocal nospell
endfunction
nnoremap <F1> :call <SID>spell_check_current()<CR>
Run Code Online (Sandbox Code Playgroud)

有什么建议么?

谢谢。

vim spell-checking

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

在“setup.py”中指定 Python 2.7+ 和 Python 3.xx(任何)

我的“ setup.py”目前包括以下声明:

setup(...
    classifiers = [
            ...
            "Programming Language :: Python :: 2.7",
            "Programming Language :: Python :: 3",
            "Programming Language :: Python :: 3.1",
            "Programming Language :: Python :: 3.2",
            "Programming Language :: Python :: 3.3",
            "Programming Language :: Python :: 3.4",
            "Programming Language :: Python :: 3.5",
            "Programming Language :: Python :: 3.6",
            "Programming Language :: Python",
            ...
            ],
    ...
    )
Run Code Online (Sandbox Code Playgroud)

有没有办法让我指定“任何 Python 3,从 3.0 起”,而无需明确列举所有现有和未来的 Python?

我问这个的原因是因为,即使上面指定了一般的“编程语言 :: Python :: 3”,Anaconda 安装失败:

Fetching package metadata ......... …
Run Code Online (Sandbox Code Playgroud)

python version setup.py

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

有没有办法确定 Vim 中是否已经定义了高亮?

对于文件类型插件,我想定义并使用默认的自定义突出显示名称,例如:

hi CsvColumn guifg=black guibg=NavajoWhite ctermfg=black ctermbg=yellow
Run Code Online (Sandbox Code Playgroud)

但是,我希望允许用户定义自己而不是默认值,因此可以执行以下操作:

if <somehow or other check if 'CsvColumn' has NOT been defined>
    hi CsvColumn guifg=black guibg=NavajoWhite ctermfg=black ctermbg=yellow
fi
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

由于这是在文件类型插件中,因此每次加载或读取缓冲区时都会执行一次,因此很有可能在获取用户的“.vimrc”之后获取它,因此用户在那里提供的任何定义或如果我不进行检查,colorscheme 中的内容将被覆盖。

vim syntax-highlighting colors

3
推荐指数
1
解决办法
240
查看次数

拦截“git commit -a(m)”

我喜欢 git 索引允许的细粒度提交,即单个文件的暂存,甚至git add在最终提交之前通过。不幸的是,有时在花费一些时间进行特定提交后,肌肉记忆开始起作用,因此我git commit -a -m "msg". 然后我要么不得不忍受它,要么跳过一些reset--amend箍。

有没有办法让我(理想情况下,全局)配置 Git,以便如果我发出 a git commit -a,它会被拦截?也许一个脚本要求我确认我是否真的想提交所有内容?我曾考虑将提交操作委托给包装器脚本(例如,“gitcommit”),但认为这不会很好地工作,因为它不会阻止我执行 a git commit -a -m "msg",这首先是问题所在。

git

2
推荐指数
1
解决办法
656
查看次数

CMake:从“ make install [all]”中排除自定义安装目标

我有一个作为项目一部分构建并链接到的库。我要提供的工具可以在系统范围内(或设置$ {CMAKE_INSTALL_PREFIX}的任何位置)安装该库。否则,默认情况下,项目的最终构建产品将静态链接到库,并且前者将被安装,但是库二进制文件保留在构建目录中。

换一种说法:

$ make
$ make install
Run Code Online (Sandbox Code Playgroud)

将构建和安装程序,但仅

$ make install.foo
Run Code Online (Sandbox Code Playgroud)

会将库安装到$ {CMAKE_INSTALL_PREFIX},并在需要时首先构建它。

到目前为止,我有类似这样的内容(从实际脚本中简化了,所以可能会有错误):

INCLUDE_DIRECTORIES( "${CMAKE_CURRENT_LIST_DIR}")
SET (FOO_LIBRARY "foo")

# Following builds library and makes it available to
# be linked other targets within project by:
# TARGET_LINK_LIBRARIES(${progname} ${FOO_LIBRARY})
ADD_LIBRARY(${FOO_LIBRARY}
    foo/foo.cpp # and other sources ...
    )

###########################################################
# Approach #1
# -----------
# Optionally allow users to install it by invoking:
#
#       cmake .. -DINSTALL_FOO="yes"
#
# This works, but it means that users will have to …
Run Code Online (Sandbox Code Playgroud)

install cmake target

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