https://github.com/MindShow/USBDisplay/blob/main/WinDows/MSDisplay_MultiDev_v1.0.0.18.0.exe
7BE04791DF7CC79FC8427098BF9E3C11206E54D2D613D470E4B4D5855451E816
// check.c(プロダクトコード)
#include <stdio.h>
#include "check.h"
#include "sum.h"
#include "../test/debug.h"
#ifdef __cplusplus
extern "C" {
#endif
#include "../test/test.h"
// __DECL__を使用する <S>
DECL_STUB(static, int, check, (int a, int b, int c));
extern int sum(int a, int b);
// __DECL__を使用する <E>
// プロトタイプ宣言
static int check(int a, int b, int c);
static int check(int a, int b, int c) {
int result = 0;
int sum_ret = 0;
sum_ret = sum(a, b);
if (sum_ret == c) {
result = 1;
} else {
result = 0;
}
return result;
}
#ifdef __cplusplus
}
#endif
#ifdef _DEBUG
#define TRACE(s) if (fp_log != NULL) fprintf(fp_log, s);
#else
#define TRACE(s)
#endif
#ifdef _DEBUG
#include "utf8util.h"
#endif
#include "PAC/pacHardware.h"
#include "config/OpcUaIni.h"
#if defined(__QNX__)
#if defined(QNX7_OR_LATER)
// QNX7.1 64bit pthread_self() return value pthread_t --> 32bit
#define DEBUG_FMT "%s|%08X* %s"
#else // QNX7_OR_LATER
// QNX6.5 32bit pthread_self() return value pthread_t --> 32bit
#define DEBUG_FMT "%s|%04X* %s"
#endif // QNX7_OR_LATER
#elif defined(__linux__)
// Linux 64bit pthread_self() return value pthread_t --> 64bit
#define DEBUG_FMT "%s|%016lX* %s"
#else // QNX/linux
#error Linux 32-bit not supported.
#endif // QNX/linux
namespace
{
static bool enableTrace = false;
static bool printTime = false;
}
void TraceOutput::print(const char* format, ...)
{
if (enableTrace)
{
va_list args;
va_start(args, format);
vfprintf(stdout, format, args);
va_end(args);
}
}
void TraceOutput::trace(const char* format, ...)
{
if (enableTrace)
{
char buff[4096];
va_list args;
va_start(args, format);
vsnprintf(buff, 4096, format, args);
va_end(args);
if (printTime)
{
#if defined(DEBUG_FMT)
fprintf(stdout, DEBUG_FMT, UaDateTime::now().toTimeString().toUtf8(), pthread_self(), buff);
#endif // DEBUG_FMT
}
else
{
fputs(buff, stdout);
}
}
}
```gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
```json:launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 起動",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/test/UnitTestExecutor",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "gdb の再フォーマットを有効にする",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "逆アセンブリ フレーバーを Intel に設定",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
// "version": "0.2.0",
// "configurations": [
// {
// "type": "lldb",
// "request": "launch",
// "name": "Debug",
// "program": "${workspaceFolder}/build/test/UnitTestExecutor",
// "args": [],
// "cwd": "${workspaceFolder}"
// }
// ]
}
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: clang-10 アクティブなファイルのビルド",
"command": "/usr/bin/clang-10",
"args": [
"-fcolor-diagnostics",
"-fansi-escape-codes",
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "デバッガーによって生成されたタスク。"
}
],
"version": "2.0.0"
}
Purpose
gitでブランチ管理した人向けの環境提供。
Branches
master ... svn-mirrorとdevelop-xxxの統合ブランチ。
svn-mirror ... svnと同期しているブランチ
develop-xxx ... 機能ごとのブランチ。xxxは適当な名前を付けてください。
Branches Operation
svnの取り込み
svn-mirrorは、適当なタイミング(1日一回など)でsvnのコードを反映する。
masterにsvn-mirrorを適当なタイミングでマージする。
開発用ブランチの作成
develop-xxxを作成して機能追加や個別対応を行う。
develop-xxxはmasterからブランチする。
develop-xxxをmasterからブランチする前には、masterにsvn-mirrorをマージする。
svnへのコミット
develop-xxxでの開発が完了したら、masterへのマージとsvnへコミットする。
適宜masterにsvn-mirrorをマージし、svnへのコミットはdevelop-xxxで開発した対象のみとなるようにすること。
Directory Structure
git-repositoryi-root
src
branches
nextgen ... from svn(*1)
R_0
UnifiedAutomation
1.7.4 ... from svn(*2)
Note1:以下よりミラーする
http://10.6.132.49/svn/NEX/branches/NEX_CPU/Develop/OPCUA/branches/nextgen
Note2:以下よりミラーする
http://10.6.132.49/svn/NEX/branches/NEX_CPU/Develop/OPCUA/R_0/UnifiedAutomation/1.7.4
How To Put SVN and GIT
svnとgitをローカルの同一フォルダに配置する方法。
1.gitリポジトリをローカルにチェックアウトする。
2."Directory Structure"で示したsvnミラー対象を1とは異なるローカルの適当な場所にチェックアウトする。
3.2でチェックアウトした.svnを"Directory Structure"で示したsvnミラー場所に配置する。
4.svnをupdateする。
Misc
gitの設定
以下は必須。
git config [--global] user.name {OpenLDAPのユーザ名}
git config [--global] user.email {emailアドレス}
git config [--global] core.autocrfl false // 改行コード変換しない
cmake_minimum_required(VERSION 3.5.1)
project(hello)
if(MSVC)
string(REPLACE "/W3" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /EHsc")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /DBUILD_TYPE=\\\"Debug\\\"")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /DBUILD_TYPE=\\\"Release\\\"")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DBUILD_TYPE=\\\"Debug\\\"")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DBUILD_TYPE=\\\"Release\\\"")
endif()
add_executable(hello hello.cpp)
5.3. コマンドラインからキャッシュ変数を指定する
CMakeではConfigure時に-Dオプションを付けることでキャッシュ変数の値を上書きすることができます。
先ほど作成したCMakeLists.txtを以下のコマンドでConfigureし直してみましょう。
cmake .. -DMY_VARIABLE_B="fugafuga"
CMakeではオプションの後のスペースを省略できるので以下の2つは同じ意味を持ちます。
-DMY_VARIABLE_B="fugafuga"
-D MY_VARIABLE_B="fugafuga"
キャッシュ変数の数が多くなるとコマンドがどんどん長くなるので、スペースは省略することが多いです。
さて、このコマンドでConfigureを実行すると実行結果が以下のように変わっているはずです。
-- MY_VARIABLE_A : hogehoge
-- MY_VARIABLE_B : fugafuga
MY_VARIABLE_B contains 'fuga'
-- Configuring done
-- Generating done
キャッシュ変数の中身がhogehogeからfugafugaに上書きされ、if文の分岐によりMY_VARIABLE_B contains 'fuga'が表示されています。 ここでもう一度、オプションなしでConfigureを実行してみましょう。
cmake ..
上書きされたキャッシュ変数の値はCMakeCache.txtの中に保存されているので、再びオプションなしでConfigureを実行しても値はfugafugaのままです。 Configureの際にset(MY_VARIABLE_B ${MY_VARIABLE_A} ...)が呼び出されはするものの、このコマンドは作成済みのキャッシュ変数は上書きしません(もちろんCMakeCache.txtを削除してから再度Configureするとhogehogeに戻ります)。
つまりこの状態でGenerateを行えばMY_VARIABLE_BにfugafugaがセットされたものとしてCMakeスクリプトが実行され、プロジェクトファイルが作成されます。 キャッシュ変数の値をうまく利用するようなCMakeLists.txtを書いておけば、ユーザーが後からキャッシュ変数を通してプロジェクトの設定を調整できるようになるというわけです。
https://github.com/MindShow/USBDisplay/blob/main/WinDows/MSDisplay_MultiDev_v1.0.0.18.0.exe
7BE04791DF7CC79FC8427098BF9E3C11206E54D2D613D470E4B4D5855451E816