小编Jac*_*lly的帖子

在CMake中创建目录

在CMake中,我想创建一个目录(如果它尚不存在).我怎样才能做到这一点?

cmake

126
推荐指数
3
解决办法
7万
查看次数

CMake:如何"尽可能静态地"生成二进制文件

我想控制在CMake中找到/链接我的二进制文件的库的类型.最终目标是,"尽可能静态地"生成二进制文件,以便静态链接每个具有可用静态版本的库.这很重要,因为在测试期间可以在不同系统中实现二进制文件的可移植性.

ATM这似乎很难实现,因为FindXXX.cmake软件包,或者更确切地说,只要静态和动态都可用,find_library命令总是会获取动态库.

有关如何实现此功能的提示 - 最好以优雅的方式 - 非常受欢迎!

linker cmake shared-libraries static-linking dynamic-library

47
推荐指数
2
解决办法
2万
查看次数

Bash脚本需要sudo密码

我正在创建一个Bash安装程序脚本,它为OSX和Linux编译和安装一些库.因为我的脚本中的一些命令("make install","apt-get install","port install"等)需要sudo,我需要用户提供密码.

目前,只要第一个sudo命令即将执行,就会要求用户输入密码,但由于这通常是在编译阶段之后,因此在启动脚本和输入密码之间总会有一段时间.

我想在脚本的开头放入密码输入+检查.另外,我很好奇这是否真的是一种安装系统库的好方法.

或者我可以在不需要sudo的本地沙箱位置安装库,但是我必须告诉apt-get和macports安装他们的库以外的默认值/ usr/local /和/ opt/local ,我不知道该怎么做,也不知道这是一个聪明的想法.

bash sudo

36
推荐指数
2
解决办法
2万
查看次数

在MSVC中链接错误LNK2019,带有__imp__前缀的未解析符号,但应该来自静态lib

我正在尝试将MSVC中的问题与我为g ++编写的项目联系起来.这是问题所在:

我将libssh构建为静态库作为我的应用程序的一部分,在cmake中添加目标

add_library(ssh_static STATIC $ libssh_SRCS)

Libssh在C中,所以我有'extern'C"{...}'将包含在我的c ++源代码中.然后我将ssh_static目标链接到我的可执行文件sshconnectiontest

target_link_libraries(sshconnectiontest ... ssh_static ...)

这一切都适用于linux和gcc,但现在在MSVC中我得到了

error LNK2019: unresolved external symbol __imp__[function names here] referenced in [filename]
Run Code Online (Sandbox Code Playgroud)

对于我使用的每个libssh函数.

任何想法都出错了?我已经读过某个地方,imp前缀意味着链接器期望链接.dll,但这不应该是这种情况,因为ssh_static在add_library调用中被声明为静态库...

cmake dllimport lnk2019 visual-c++ imp

25
推荐指数
2
解决办法
5万
查看次数

使用C和C++接口编写库,以哪种方式包装?

在准备一个库(让我们称之为libfoo)时,我发现自己面临以下困境:我是否将其编写为带有C包装器的C++库:

namespace Foo {
  class Bar {
    ...
  };
}

/* Separate C header. #ifdef __cplusplus omitted for brevity. */
extern "C" {
  typedef void *FooBar;
  FooBar* foo_bar_new() { return new Foo::Bar; }
  void foo_bar_delete(FooBar *bar) { delete bar; }
}
Run Code Online (Sandbox Code Playgroud)

或者将它编写为带有C++包装器的C库更好:

/* foo/bar.h. Again, #ifdef __cplusplus stuff omitted. */

typedef struct {
  /* ... */
} FooBar;

void foo_bar_init(FooBar *self) { /* ... */ }
void foo_bar_deinit(FooBar *self) { /* ... */ }

/* foo/bar.hpp */

namespace Foo { …
Run Code Online (Sandbox Code Playgroud)

c c++ library-design

14
推荐指数
3
解决办法
6803
查看次数

Makefile ifeq:它们何时被评估?

以下是一个非常简单的makefile,似乎无法正常工作.

TEST=ON

buildbegin:
ifeq ($(TEST),ON)        
    @echo TEST PASSED
else
    @echo TEST FAILED
endif
Run Code Online (Sandbox Code Playgroud)

无论我将TEST变量设置为什么,我的ifeq语句都会通过.我总是看到TEST PASSED.谁知道我在这里做错了什么?

编辑:

好.我的例子并不准确.我实际拥有的是:

SHELL = /bin/sh

DEFAULT_TARGS:= all  all_debug  
DEBUG_TARGS:= all_debug
ALL_TARGS:= $(DEFAULT_TARGS) $(DEBUG_TARGS)

.PHONY: $(ALL_TARGS)
.PHONY: buildbegin

$(ALL_TARGS): buildbegin

TEST=ON

$(DEBUG_TARGS): TEST=OFF

buildbegin:
    @echo $(TEST)
ifeq ($(TEST),ON)
    @echo PASSED
else
    @echo FAILED
endif
Run Code Online (Sandbox Code Playgroud)

运行make all或make all_debug将导致打印"PASSED".如果我在条件之前回显$(TEST),看起来我的规则正在改变变量,但ifeq只能看到默认值.

makefile gnu-make

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

Haskell Network.HTTP错误地下载图像

我正在尝试使用Network.HTTP模块下载图像,但收效甚微.

import Network.HTTP

main = do
  jpg <- get "http://www.irregularwebcomic.net/comics/irreg2557.jpg"
  writeFile "irreg2557.jpg" jpg where
       get url = simpleHTTP (getRequest url) >>= getResponseBody
Run Code Online (Sandbox Code Playgroud)

输出文件出现在当前目录中,但无法在chromium或ristretto下显示.Ristretto报告"解释JPEG图像文件时出错(不是JPEG文件:以0c3 0xbf开头)".

haskell http download

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

如何在Makefile中创建.Po文件?

我已经更改了项目的Makefile,现在当我创建它时,它返回: -

ERROR: "make[2]: *** No rule to make target ../libvmi/driver/.deps/xen.Po. Stop. "

Makefile如何创建.Po文件以及如何禁用为某个文件创建文件 ../libvmi/driver/.deps/xen.c

c automake makefile

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

如何在emacs中为条纹添加差异标记?

我正在使用GNU Emacs 23,但欢迎其他emacsen的答案作为起点.

对于版本控制下的文件,我想在条纹中显示差异标记,类似于subclipse使用的标记:

http://subclipse.tigris.org/images/workspace-ss.png

看起来这可能是通过解析输出vc-diff和使用内置支持边缘,但我不想重新发明这个特定的轮子,除非我真的不得不.

emacs version-control

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

libtool在XCode 4.3上以退出代码1失败

我有XCode 4.3,我得到了令人沮丧的xml-lib相关错误.我有一种感觉,因为4.3不使用/ Developer文件夹而是/Applications/XCode.app/...错误信息如下:

Libtool /Users/dkatz/Library/Developer/Xcode/DerivedData/RWEngines-ewchevfhokeivnffrputdqapsyxu/Build/Products/Release-iphonesimulator/RWEngines.framework/Versions/A/RWEngines normal i386
cd /Users/dkatz/Sites/xCode/RWA/RWEngines
setenv MACOSX_DEPLOYMENT_TARGET 10.6
setenv PATH "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool -static -arch_only i386 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator5.0.sdk -L/Users/dkatz/Library/Developer/Xcode/DerivedData/RWEngines-ewchevfhokeivnffrputdqapsyxu/Build/Products/Release-iphonesimulator -filelist /Users/dkatz/Library/Developer/Xcode/DerivedData/RWEngines-ewchevfhokeivnffrputdqapsyxu/Build/Intermediates/RWEngines.build/Release-iphonesimulator/RWEngines.build/Objects-normal/i386/RWEngines.LinkFileList -ObjC -Xlinker -no_implicit_dylibs -D__IPHONE_OS_VERSION_MIN_REQUIRED=50000 -framework UIKit /Users/dkatz/Library/Developer/Xcode/DerivedData/RWEngines-ewchevfhokeivnffrputdqapsyxu/Build/Products/Release-iphonesimulator/libCorePlot-CocoaTouch.a -framework SenTestingKit -framework QuartzCore -framework Foundation -framework RWCommon -o /Users/dkatz/Library/Developer/Xcode/DerivedData/RWEngines-ewchevfhokeivnffrputdqapsyxu/Build/Products/Release-iphonesimulator/RWEngines.framework/Versions/A/RWEngines
Run Code Online (Sandbox Code Playgroud)

而实际的错误:

/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool失败,退出代码为1

多谢你们!

xcode objective-c xcode4.3

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