manywaypark's Blog
개발, 검색, 함수

vcpkg는 다 좋은데 특정 버전/이전 버전의 라이브러리를 쓰려면 명시적인 명령어가 없어서 좀 번거롭다.
다음의 과정을 거쳐서 특정버전의 라이브러리를 쓸 수 있다.

  1. 라이브러리의 특정 버전 commit id(sha)를 알아낸다.
  2. ports/ 디렉토리의 파일들을 sha를 사용해서 가져온다(checkout).
  3. 라이브러리를 (재)설치한다

현재 설치된 최신의 protobuf(3.9.1)를 3.8.0로 교체하는 예를 들어보겠다.

C:\libs\vcpkg>git log ports/protobuf
......
commit 1a63672f8fa796b044c839c777f7113ccea6e635
Author: myd7349 <myd7349@gmail.com>
Date:   Wed Jun 19 04:34:43 2019 +0800

    [protobuf] Update to 3.8.0 (#6739)

    * [protobuf] Update to 3.8.0

    * [nlopt] set options off

    * [shogun] should not use CMAKE_SYSTEM_PROCESSOR in port file

    * [protobuf] Add Homepage

    * [protobuf] turn warning flag off
......
C:\libs\vcpkg>git checkout 1a63672f8fa796b044c839c777f7113ccea6e635 -- ports/protobuf
C:\libs\vcpkg>vcpkg remove protobuf:x86-windows
The following packages will be removed:
    protobuf:x86-windows
Removing package protobuf:x86-windows...
Removing package protobuf:x86-windows... done
Purging package protobuf:x86-windows...
Purging package protobuf:x86-windows... done

C:\libs\vcpkg>vcpkg install protobuf:x86-windows
The following packages will be built and installed:
    protobuf[core]:x86-windows
Starting package 1/1: protobuf:x86-windows
Building package protobuf[core]:x86-windows...
-- Downloading https://github.com/google/protobuf/archive/v3.8.0.tar.gz...
-- Extracting source C:/libs/vcpkg/downloads/google-protobuf-v3.8.0.tar.gz
-- Applying patch fix-uwp.patch
-- Applying patch disable-lite.patch
-- Using source at C:/libs/vcpkg/buildtrees/protobuf/src/v3.8.0-f0fa939850
-- Configuring x86-windows
-- Building x86-windows-dbg
-- Building x86-windows-rel
-- Installing: C:/libs/vcpkg/packages/protobuf_x86-windows/tools/protobuf/protoc.exe
-- Installing: C:/libs/vcpkg/packages/protobuf_x86-windows/share/protobuf/copyright
-- Performing post-build validation
-- Performing post-build validation done
Building package protobuf[core]:x86-windows... done
Installing package protobuf[core]:x86-windows...
Installing package protobuf[core]:x86-windows... done
Elapsed time for package protobuf:x86-windows: 9.415 min

Total elapsed time: 9.415 min

The package protobuf:x86-windows provides CMake targets:

    find_package(protobuf CONFIG REQUIRED)
    target_link_libraries(main PRIVATE protobuf::libprotoc protobuf::libprotobuf)


C:\libs\vcpkg>cat ports/protobuf/CONTROL
Source: protobuf
Version: 3.8.0
Homepage: https://github.com/google/protobuf
Description: Protocol Buffers - Google's data interchange format

Feature: zlib
Description: ZLib based features like Gzip streams
Build-Depends: zlib
C:\libs\vcpkg>

현재 설치되어 있지 않은 라이브러리라면 remove를 할 필요는 없다.

ref: https://github.com/Microsoft/vcpkg/issues/1681

happy hackin'

댓글을 달아 주세요

윈도우즈에서는 뒤에 버전번호가 붙은 DLL은 좀 귀찮은 면이 많다. 아마도 자동으로 symlink를 생성할 수 없어서 기본으로 버전번호가 붙은 DLL만 생성되는 것으로 보인다.

따라서 그냥 없애는 것이 편하다.

간단하게 아래 두 방법 중 하나를 선택하면 되는데...

CONFIG += skip_target_version_ext

또는

VERSION = 0.0.1
win32:TARGET_EXT = .dll

win32에서만 버전번호 없는 dll을 하나 더 생성하게 하는 두번째 방법이 좀더 유용한듯하다.

(즉, 다시말해 완전히 없애는 첫번째 방법을 취한다면 unix 계열에서 우아하게 버전번호 붙이고 버전 번호 없는 대표명으로 링크 생성하는 것이 동작하지 않는다)

refs:

happy hackin'

댓글을 달아 주세요

windows product key 보기

tips & tricks/Win 2019.08.01 22:21 by manywaypark

Single board computer나 embedded device에 미리 설치되어 나오는 윈도우즈의 경우 product key를 따로 제공하지 않는 경우가 있다.

command line에서 아래처럼 하면 볼 수 있다.

wmic path SoftwareLicensingService get OA3xOriginalProductKey

 

ref: https://www.groovypost.com/howto/find-your-windows-10-product-key/

 

How to Find your Windows 10 Product Key

Microsoft has made every effort to make Windows 10 licensing convenient. That said, there are times where product activation might not work according to plan. Whether you want to perform a new install or transfer your Windows 10 license to a new computer;

www.groovypost.com

happy hackin'

댓글을 달아 주세요

Emacs Shell에서 PATH 문제

tips & tricks/Mac 2018.11.03 00:17 by manywaypark

예전에는 이 문제가 안생겼던거같은데, 모하비 업그레이드 후에 생긴것같다.

purcell의 emacs.d를 사용하면 자동으로 exec-path-from-shell을 호출하는 것으로 보이는데 이상하다.


일단 향후 해결을 위해 글을 남김.


TBD


refs: 

https://emacs.stackexchange.com/questions/10722/emacs-and-command-line-path-disagreements-on-osx

https://emacs.stackexchange.com/questions/461/configuration-of-eshell-running-programs-from-directories-in-path-env-variable

http://ergoemacs.org/emacs/emacs_env_var_paths.html

TAG emacs, Mac, OSX, path

댓글을 달아 주세요

docker에 redmine 설치하기

tips & tricks 2018.11.01 16:35 by manywaypark

기본적으로 container 두 개를 postgresql, redmine으로 실행하면 된다.

두 container를 연결하는 것말고는 뭐 특별한 것은 없다.

아래 참조 링크에서는 backend DB로 MySQL을 사용하는데 나는 Postgresql을 선호하므로 Postgresql을 썼다.


최초 설정:

docker run --name my.postgres -e POSTGRES_PASSWORD=DB_PASSWORD_HERE -d -p 5432:5432 postgres

docker run -d --name my.redmine -p 3000:3000 --link my.postgres:postgres redmine


이제 http://localhost:3000 에 접속하면 redmine을 사용할 수 있다. 최초의 user/password는 admin/admin이다.


이후 실행:

docker start my.postgres my.redmine


NOTE: 여기서 사용한 postgres image는 container를 commit해서 image를 만들어도 data가 보존되지 않는다. (참고 링크 2번 참고)


ref:

http://pseg.or.kr/pseg/infoinstall/6103

https://stackoverflow.com/questions/27377876/docker-postgres-with-initial-data-is-not-persisted-over-commits


happy hackin'

댓글을 달아 주세요

apt-cyg라는 간단한 script를 깔면 된다.


설치:

$ wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg

$ install apt-cyg /bin


사용:

$ apt-cyg install emacs


refs:

https://stackoverflow.com/questions/9260014/how-do-i-install-cygwin-components-from-the-command-line

https://github.com/transcode-open/apt-cyg


happy hackin'


댓글을 달아 주세요

qmake file 에서의 INSTALLS

tips & tricks/Qt 2018.10.26 14:01 by manywaypark

qmake 파일에서 INSTALLS에 뭔가 추가할 때는 한번에 하나씩해야한다.

problem:

.lib 파일과 .dll을 각각 /path/to/install의 하위에 설치하려는 (제법 멋진) 의도를 가진 아래 코드는 (n)make install 했을 때 제대로 동작하지 않고 .lib 파일만 설치된다.

    target_lib.path  = /path/to/install/lib

    target_lib.files = $${DESTDIR}/*.lib

    target_dll.path  = /path/to/install/bin

    target_dll.files = $${DESTDIR}/*.dll

    INSTALLS += target_lib target_dll


solution:

이렇게 두 종류의 파일 타입을 각각 써줘야 제대로 동작한다.

    target_lib.path  = /path/to/install/lib

    target_lib.files = $${DESTDIR}/*.lib

    INSTALLS += target_lib

    target_dll.path  = /path/to/install/bin

    target_dll.files = $${DESTDIR}/*.dll

    INSTALLS += target_dll


happy hackin'


PS. 몇년이나 지난 코드에서, 그동안 사용할 때마다 dll은 수동 복사했던 project file에서 발견함. Orz.


TAG INSTALLS, qmake, Qt

댓글을 달아 주세요

개발용 Windows VM

tips & tricks/Win 2018.10.21 22:11 by manywaypark

MS에서 개발 환경이 구축된 VM을 배포하는구나.

https://developer.microsoft.com/ko-kr/windows/downloads/virtual-machines


여태 나만 모른 건가?


happy hackin'

댓글을 달아 주세요

Qt + MSVC 2017

tips & tricks/Qt 2018.10.16 18:00 by manywaypark

현재 기준(VS2017)으로 설명한다. 

일단 VS를 설치하면 기본적으로는 VC가 안깔린다. 

요즘은 다들 C++ 따위 쓰지 않나봐. Orz.

VC 설치:

Visual Studio Installer에서 Visual Studio Community 2017 > (More 밑의) Modify > Desktop development with C++ 을 선택해서 VC를 설치한다.

Qt 설치:

Qt 설치 시에 msvc 어쩌구 하는 component들 중에서 2017 관련이 보이면 그걸 설치하고, 없으면 2015 관련을 설치한다 (2015와 2017은 호환된다고 어디서 봤다).


매번 헷갈리네. 이건 내 문제가 아니라 MS 문제일지도...


happy hackin'


refs: 

  • https://forum.qt.io/topic/78962/how-to-use-qt-with-visual-studio-2017/12
  • https://stackoverflow.com/questions/45164515/how-to-use-visual-studio-2017-with-qt-to-develop-gui-applications


댓글을 달아 주세요

Ubuntu에서 Nvidia driver 깔기

장치가 인식되어있는지 확인:

$ ubuntu-drivers devices

driver 자동 설치:

$ sudo ubuntu-drivers autoinstall


참조 링크에 더 다양한 방법이 있다.


ref: https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-ubuntu-18-04-bionic-beaver-linux


 happy hackin'

댓글을 달아 주세요

1 2 3 4 ··· 15 
분류 전체보기 (299)
잡담 (20)
함수형 언어 (62)
emacs (16)
java (18)
tips & tricks (150)
사랑 (1)
가사 (0)
독서 (4)
mobile (6)
비함수형 언어 (2)