Posted at 2020/04/20 23:23 //
in Programming //
by Daniel
오랜만에 Cygwin + CDT를 써봤습니다.
설정하는데 세시간쯤 걸린 것 같네요.
마지막에 디버깅 환경에서 문제가 있었는데,
( Can’t find a source file at “/cygdrive/c/ 라며 에러 남)
아래 링크에서 답을 찾았습니다.https://stackoverflow.com/questions/17267632/how-to-get-gdb-working-with-eclipse-cdt-under-windows-fails-to-find-source-code
Go to Windows->Preference->C/C++ -> Debug -> Source Lookup Path. Add following ‘Path mapping’.
\cygdrive\c -> c:\
방법
Eclipse + CDT 설치
저는 이거 설치 https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/2020-03/R/eclipse-cpp-2020-03-R-incubation-win32-x86_64.zip
Cygwin 설치
저는 64비트와 32비트 둘 다 설치했는데 64비트면 충분할 듯.
패키지는 gcc-core, gcc-g++, gdb, make, gconvr 등을 깔면 되는데 저는 libc라던가 엄청 많이 깔아뒀습니다.
심지어 잘 안되길래 mingw64-x86 시리즈도 다 설치...
저는 PATH를 기본 설정을 안했기 때문에, eclipe 설정을 추가해줬습니다. (workspace 설정)
Preferences -> C/C++ -> Build -> Environment 에서 Variable을 Add로 추가. Variable: PATH Value: c:\cygwin64\bin
(설정은 Append variables to native environment)
그리고 위에 얘기했듯이 디버깅 환경을 위해,
Go to Windows->Preference->C/C++ -> Debug -> Source Lookup Path. Add following ‘Path mapping’.
\cygdrive\c -> c:\
이렇게 세팅해주시면 되네요.
프로젝트 생성해봅니다.
new->Project -> C/C++ -> C Project
Next
프로젝트 이름(hello로 여기선 설정)과 Hello World ANSI C Project 에 Cygwin GCC 선택
빌드 된 hello.exe 를 클릭해놓고,
우클릭 -> Run as -> C/C++ Local Application 으로 실행
하면 됩니다.
프로파일링은 기본 Path를 추가해야만(시스템 Path) 동작하더라.
우클릭 -> Profile -> Profiling Tools Configuration에서
Environment -> Path 추가 (아까처럼)해봤자 동작하지 않았음.
Posted at 2019/03/12 08:12 //
in Programming //
by Daniel
나중을 위해 저장.
이클립스 개발 중 extensions에서 org.eclipse.core.runtime.applications extension point 정보가 제대로 보이지 않을 때
타겟에서 플러그인이 선택되어있지 않아서인데,
필요한 플러그인 이름은 org.eclipse.core.runtime.source 라고 생각하겠지만
사실은 org.eclipse.equinox.app.source 이다. 타겟에 위 플러그인을 추가하면 된다.
이것 때문에 몇주간 삽질함.
* com.autron.odin.excel.core.ethercc.imports
* |_ Hex2Bin.java
*
* Description: to support formula HEX2BIN
* Howto Use : AnalysisToolPak.registerFunction("HEX2BIN", Hex2Bin.instance);
*
* com.autron.odin.excel.core.ethercc.imports
* |_ Bin2Hex.java
*
* Description: to support formula BIN2HEX.
* Howto Use : AnalysisToolPak.registerFunction("BIN2HEX", Bin2Hex.instance);
*
Posted at 2014/07/03 17:05 //
in Programming //
by Daniel
제가 잊어버릴까봐 공유합니다.
사용자 스크립트로 먼저 코멘트를 strip 하고
그 결과를 가지고 비교하여 diff 여부를 리턴합니다.
#!/bin/sh
C, C++ comments aware diff
this uses stripcomment script to strip comments
Usage=“Usage: {script name} {file1} {file2}”
if [ $# -eq 0 ]; then # if no argument specified
echo $Usage # print Usage string value
exit 1
fi
if [ $# -eq 1 ]; then # if no argument specified
echo $Usage # print Usage string value
exit 1
fi
FILE1=$1
FILE2=$2
TMPFILE1=/tmp/aa$$
TMPFILE2=/tmp/bb$$
Posted at 2014/04/09 08:20 //
in Programming //
by Daniel
setlocal enabledelayedexpansion
for /r %%I in (*) do (
@REM echo %%~nxI
set _CMDL=!_CMDL! %%~nxI
)
endlocal&set CMDLINE=%_CMDL%
enabledelayedexpansion 을 써서 for문 안에서 변수가 갱신되도록 한다. (_CMDL) 이때는 %대신 !를 써서 표시.
%%~nxI - 파일의 이름과 확장자 (for /?로 확인 가능)
%~I - 따옴표(")를 제거하는 %I을 확장합니다.
%~fI - %I을 정규화된 경로 이름으로 확장합니다.
%~dI - %I을 드라이브 문자로만 확장합니다.
%~pI - %I을 경로로만 확장합니다.
%~nI - %I을 파일 이름으로만 확장합니다.
%~xI - %I을 파일 확장명으로만 확장합니다.
%~sI - 확장된 경로가 짧은 이름만 가지고 있습니다.
%~aI - %I이 파일의 파일 속성으로만 확장합니다.
%~tI - %I을 파일의 날짜/시간으로만 확장합니다.
%~zI - %I을 파일 크기로만 확장합니다.
%~$PATH:I - PATH 환경 변수 목록에 있는
디렉터리를 찾고 %I을 처음으로 찾은
정규화된 이름으로 확장합니다.
환경 변수 이름이 정의되지 않았거나
찾기에서 파일을 찾지 못하면
이 구문에서 빈 문자열로
확장합니다
위의 구문은 여러 가지 결과를 얻기 위해 결합될 수 있습니다.
%~dpI - %I을 드라이브 문자와 경로로만 확장합니다.
%~nxI - %I을 파일 이름과 확장명으로만 확장합니다.
%~fsI - %I 을 짧은 이름을 가진 전체 경로 이름으로만 확장합니다.
%~dp$PATH:i - %I에 대한 PATH 환경 변수 목록에 있는
디렉터리를 찾고 처음 찾은 것의
드라이브 문자와 경로로 확장합니다.
%~ftzaI - %I을 출력줄과 같은 DIR로 확장합니다.
위의 예제에서 %I과 PATH는 다른 유효한 값으로 바뀔 수 있습니다.
%~ 구문은 유효한 FOR 변수 이름으로 종료됩니다.
%I와 같은 대문자 변수 이름을 선택하면 쉽게 읽을 수 있으며
대/소문자를 구분하지 않는 구문에서 혼동을 피할 수 있습니다.
아래 스크립트(함수)는 인자로 주어진 폴더로 부터 모든 파일명들을 가져다가 폴더명과 함께 붙여 커맨드라인을 만드는 스크립트입니다.
:SET_SUBFOLDER_FILES_CMDLINE
@REM get sub folder files
@echo off
setlocal enabledelayedexpansion
set _CMDL=
for %%f in (%*) do (
for /r %%I in (%%f\*.arxml) do (
@REM echo %%~nxI
set _CMDL=!_CMDL! %%f/%%~nxI
)
)
endlocal&set CMDLINE=%_CMDL%
@REM echo %CMDLINE%
goto:eof
이와 같이 하면 알파벳과 숫자 이외의 값인 경우 _ 로 변경된 문자열을 얻을 수 있다. (파일 이름 규칙에 사용하려고 한 예제)
정규식에서 ^ 는 not을 의미, a~z, A~Z, 0~9 이외 라는 뜻이고 replaceAll은 이 정규식 형태를 읽어와서 변경한다.
정규식 테스트는 http://www.gskinner.com/RegExr/ 에서 볼 수 있다.
I was senseless and ignorant; I was a brute beast before you.
Yet I am always with you; you hold me by my right hand.
You guide me with your counsel, and afterward you will take me into glory.
Whom have I in heaven but you?
I only have you in my life
by Daniel