到目前为止,我知道更改cmake使用的目标C++编译器的最佳方法是CXX在调用cmake之前更改环境变量:
$ export CXX="clang++" && cmake --build
Run Code Online (Sandbox Code Playgroud)
Travis CI构建设置CXX并CC相应地设置构建.所以,如果你有这个.travis.yml:
language: cpp
compiler:
- gcc
- clang
script:
- cmake --build
- ./bin/foo
Run Code Online (Sandbox Code Playgroud)
第一次cmake应该使用GCC和后者的Clang不是?
相反,GCC构建编译得很好(它是cmake使用的默认编译器),但Clang版本也使用GCC:
0.01s $ echo $ CC $ CXX
clang clang ++
命令"echo $ CC $ CXX"退出0.0.02s $ $ CXX --version
clang version 3.4(tags/RELEASE_34/final)目标:x86_64-unknown-linux-gnu线程模型:posix运行:cmake -G"Unix Makefiles"-Wno-dev ../cmake
- C编译器标识是GNU
- CXX编译器标识是GNU
- 检查工作C编译器:/ usr/bin/gcc
- 检查用于工作的C编译器:/ usr/bin/gcc - 工作
- 检测C编译器ABI信息
- 检测C编译器ABI信息 - 完成
- …
我试图在测试库Catch中添加biicode支持,并且在与Objective-C和Microsoft Foundation Classes(MFC)相关的外部依赖项方面遇到了一些问题.
如果运行,则打印以下内容bii deps:
florianwolters/catch depends on:
system:
algorithm
assert.h
cmath
cstddef
cstdio
cstring
fstream
iomanip
iostream
iterator
limits
map
memory
ostream
set
sstream
stdbool.h
stdexcept
stdint.h
stdlib.h
streambuf
string
sys/time.h
sys/types.h
unistd.h
vector
windows.h
unresolved:
AfxWin.h
Foundation/Foundation.h
objc/runtime.h
sys/sysctl.h
Run Code Online (Sandbox Code Playgroud)
这三个文件sys/sysctl.h,objc/runtime.h与Foundation/Foundation.hObjective-C中的iOS开发有关.该文件AfxWin.h是Microsoft的C++库Microsoft Foundation Classes(MFC)的一部分.我创建的biicode块是florianwolters/catch(有关详细信息).
所以问题是:如何处理这种依赖?虽然我尚未检查许可证,但将Apple或Microsoft拥有的源代码(甚至可能是非法的)上传到bicode是没有意义的.
简单地忽略这些未解决的问题是"适当的"或推荐的方式吗?
编辑2015-01-11:
我已经写了一篇博客文章的过程在这里.如果我有任何错误或者您有任何改进工作流程的建议,请告诉我.
有没有一种简单的方法在使用biicode作为构造工具的c ++项目中使用clion(例如调试)?
事实上,两个系统都使用cmake,但是biicode会生成clion似乎不理解的CMakeLists.txt(位于块中的那个/ cmake中的临时块).
现在我只能使用biicode自生成的CMakeLists.txt进行常规构建,并使用手工制作的CMakeLists.txt在clion中进行编译.然而,重复构造的描述听起来不是一个好主意.
我想一些精心制作的黑暗脚本可以完成(我对cmake来说很新),但我只是在玩,我认为不值得去做或者要求它.
有没有人试图使用clion和biicode?clion是否完全支持cmake了?biicode是否使用完全符合cmake标准的工具无法理解的内部代码?我错过了一些愚蠢的想法吗?
由于我无法从发布版本更改为调试版本类型,我想知道我做错了什么.我正在使用Unix Makefiles.
在docs.biicode.com/c++/building.html中说明如何在CMakeLists.txt中添加SET()将变量添加到cmake.
我是cmake和biicode的新手,我尝试了以下所有方法:
ADD_DEFINITIONS(-DCMAKE_BUILD_TYPE=Debug)
ADD_DEFINITIONS(-DCMAKE_BUILD_TYPE:STRING=Debug)
SET(CMAKE_BUILD_TYPE Debug)
target_compile_options(my_program PUBLIC $<$<CONFIG:Debug>:-Werror>)
Run Code Online (Sandbox Code Playgroud)
但是gdb说"找不到调试符号".
另一种方式,作为状态bii --help cpp,传递给cpp:build参数,这些参数将传递给cmake,但是调用
bii cpp:build -DCMAKE_BUILD_TYPE=Debug
Run Code Online (Sandbox Code Playgroud)
产量
Building: cmake --build . -DCMAKE_BUILD_TYPE=Debug
Unknown argument -DCMAKE_BUILD_TYPE=Debug
Run Code Online (Sandbox Code Playgroud)
但直接打电话
cmake -DCMAKE_BUILD_TYPE=Debug --build .
Run Code Online (Sandbox Code Playgroud)
工作正常,我不知道如何更改命令中的顺序bii cpp:build.
这是一个误解,一个sintax错误,还是一定有其他错误?在Debug和Release之间改变的最佳位置是什么?
我想为依赖管理器Biicode创建一个块.我不想触及现有的源代码,因此我必须将现有Bii块的包含路径映射到源代码中使用的路径.
我在现有代码中使用以下内容:
#include "gtest/gtest.h"
#include "fw/core/uncopyable_mixin.h"
Run Code Online (Sandbox Code Playgroud)
使用默认设置,Bii需要以下路径:
#include "google/gtest/include/gtest/gtest.h"
#include "florianwolters/include/fw/core/uncopyable_mixin.h"
Run Code Online (Sandbox Code Playgroud)
如果我更换包含,一切都按预期工作.但正如我已经说过的那样,我不想要这样丑陋的包含路径,而是使用常识(如Boost和其他库所做的那样).
因此我需要映射路径.我已经阅读biicode.conf并偶然发现了这一[includes]部分.
我尝试过以下方法:
[requirements]
google/gtest: 9
florianwolters/uncopyable-mixin: 0
[parent]
florianwolters/singleton: -1
[paths]
include
[dependencies]
[mains]
[hooks]
[includes]
gtest/gtest.h: google/gtest/include/gtest
fw/core/uncopyable_mixin.h: florianwolters/uncopyable-mixin/include/fw/core
[data]
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
INFO: Processing changes...
WARN: Removing unused reference to "florianwolters/uncopyable-mixin: 0" from florianwolters/singleton "requirements"
WARN: Removing unused reference to "google/gtest: 9" from florianwolters/singleton "requirements"
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:我如何配置映射以使其与现有的#include语句一起使用?这必须工作,否则它是一个杀手标准......
我正在评估组织中的biicode.我去年9月开始这项活动,但由于其他紧迫问题,我没有继续这项活动.我现在已经恢复了.
似乎biicode关闭了他们的业务.他们的帮助链接似乎都没有起作用.登录页面和注册页面已经死亡.
现在有没有人使用biicode或者它已经死了?
到目前为止,我一直在使用DEV和STABLE标签发布biicode.除非我误解了,对于给定的块,似乎我可以多次发布DEV版本,并且我以前发布的代码每次都会被新版本覆盖.相反,似乎我只能发布一次STABLE版本而且我不能覆盖在该标签下发布的代码.
我想知道其他标签是如何表现的.可以覆盖ALPHA和BETA版本,还是只能在这些标签下发布一次?
谢谢!
迪米特里
我正在玩biicode,但我正面临着这个问题.我不知道我是如何获得的(我可能多次并行调用bii cpp:build命令),但我想修复我的项目:
bii cpp:build
INFO: Processing changes...
ERROR: Unexpected Exception
database is locked
ERROR: Error executing command.
Check the documentation in http://docs.biicode.com
or ask in the forum http://forum.biicode.com
Run Code Online (Sandbox Code Playgroud)
当我尝试清理东西时,我得到了:
bii clean
ERROR: Unable to properly clean project DB:
database is locked
Run Code Online (Sandbox Code Playgroud)
该项目非常简单,没什么特别棘手的,所以我认为解释它并不重要.我没有在论坛中找到关于文档的任何相关信息.我没有发现任何进程仍在构建它(我的ide,也不是我的终端)任何想法让它运行起来?
非常感谢您的回答!
PS:现在有一个biicode :)
我正在尝试用Travis和bii设置CI.有所述比科德网站上提供文档包括示例ignore.bii文件,其涉及出版块.
任何人都可以.gitignore在持续集成设置中提供我应该忽略的bii特定文件和文件夹的示例吗?
我正在查看BiiCode的C++代码,但似乎必须使用BiiCode云作为主机.有没有办法在本地服务器上保留依赖项(在我们的例子中是内部库)?我们的团队不喜欢在防火墙之外安装代码.
我一直在使用libpng从biicode现在相当长的一段时间.就在今天,我已经开始收到此错误:
Cannot open include file: 'pnglibconf.h': No such file or directory
Run Code Online (Sandbox Code Playgroud)
我注意到biicode(http://www.biicode.com/glenn/png)特定文件列为_pnglibconf.h.我不知道这是最近的变化,还是一直如此.有人知道块是否已经以某种方式被修改(它仍然是稳定的版本0)并且是否需要更正或者是否可以使其工作,因为它是以某种方式?
谢谢!