Skip to content

Commit

Permalink
samples加入vs项目中
Browse files Browse the repository at this point in the history
  • Loading branch information
yyzybb537 committed Jan 25, 2016
1 parent 37bb879 commit 09ef4df
Show file tree
Hide file tree
Showing 15 changed files with 87 additions and 1 deletion.
2 changes: 2 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,8 @@ else ()
add_subdirectory("${PROJECT_SOURCE_DIR}/test/gtest_unit")
add_subdirectory("${PROJECT_SOURCE_DIR}/test/benchmark")
endif()
add_subdirectory(${PROJECT_SOURCE_DIR}/src/main)
add_subdirectory(${PROJECT_SOURCE_DIR}/samples)
set_target_properties("${STATIC_T}" PROPERTIES COMPILE_FLAGS "/wd4819 /wd4267")
endif()

58 changes: 58 additions & 0 deletions samples/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
cmake_minimum_required(VERSION 2.8)

###################################################################################
project(samples)

if (WIN32)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
endif()

include(${PROJECT_SOURCE_DIR}/../boost.cmake)

include_directories(${PROJECT_SOURCE_DIR}/../src)
if (UNIX)
include_directories(${PROJECT_SOURCE_DIR}/../src/linux)
set(depend_libgo libgo_dynamic)
else()
include_directories(${PROJECT_SOURCE_DIR}/../src/windows)
set(depend_libgo libgo_static)
endif()
link_directories(${PROJECT_SOURCE_DIR}/../build)

if (UNIX)
set(LINK_ARGS libgo libgo_main boost_coroutine boost_context boost_system boost_thread pthread dl)
else ()
set(LINK_ARGS libgo ${Boost_LIBRARIES} ws2_32)
endif()

aux_source_directory(${PROJECT_SOURCE_DIR} SRC_LIST)

add_executable(sample2_yield.t sample2_yield.cpp)
add_dependencies(sample2_yield.t ${depend_libgo} libgo_main)
if (WIN32)
list(REMOVE_ITEM SRC_LIST ${PROJECT_SOURCE_DIR}/sample2_yield.cpp)
list(REMOVE_ITEM SRC_LIST ${PROJECT_SOURCE_DIR}/sample3_echo.cpp)
list(REMOVE_ITEM SRC_LIST ${PROJECT_SOURCE_DIR}/sample9_curl.cpp)
list(REMOVE_ITEM SRC_LIST ${PROJECT_SOURCE_DIR}/sample11_await.cpp)
target_link_libraries(sample2_yield.t ${LINK_ARGS} libgo_main)
else()
target_link_libraries(sample2_yield.t ${LINK_ARGS} rt)
endif()

foreach(var ${SRC_LIST})
string(REGEX REPLACE ".*/" "" var ${var})
string(REGEX REPLACE ".cpp" "" tgt ${var})

set(target ${tgt}.t)
add_executable(${target} ${var})
add_dependencies(${target} ${depend_libgo})
if (WIN32)
target_link_libraries(${target} ${LINK_ARGS})
set_target_properties(${target} PROPERTIES COMPILE_FLAGS "/wd4819 /wd4267")
set_target_properties(${target} PROPERTIES INSTALL_RPATH ${PROJECT_SOURCE_DIR}/../../build)
else()
target_link_libraries(${target} ${LINK_ARGS} rt)
endif()
endforeach(var)

1 change: 1 addition & 0 deletions samples/sample10_channel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
*
************************************************/
#include "coroutine.h"
#include "win_exit.h"

struct A
{
Expand Down
1 change: 1 addition & 0 deletions samples/sample11_await.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <iostream>
#include <boost/thread.hpp>
#include "coroutine.h"
#include "win_exit.h"
using namespace std;
using namespace std::chrono;

Expand Down
1 change: 1 addition & 0 deletions samples/sample1_go.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
* coroutine sample1
*************************************************/
#include "coroutine.h"
#include "win_exit.h"
#include <stdio.h>

void foo()
Expand Down
1 change: 1 addition & 0 deletions samples/sample2_yield.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
* coroutine sample2
*************************************************/
#include "coroutine.h"
#include "win_exit.h"
#include <stdio.h>

// 也可以使用co_main宏定义main函数,
Expand Down
1 change: 1 addition & 0 deletions samples/sample3_echo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
* 我们来看一个更加cool的例子: echo server。
************************************************/
#include "coroutine.h"
#include "win_exit.h"
#include <stdio.h>
#include <unistd.h>
#include <sys/socket.h>
Expand Down
1 change: 1 addition & 0 deletions samples/sample4_exception.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
#include <sys/types.h>
#include <fcntl.h>
#include "coroutine.h"
#include "win_exit.h"

int main()
{
Expand Down
1 change: 1 addition & 0 deletions samples/sample5_asio.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include <boost/thread.hpp>
#include <boost/asio.hpp>
#include "coroutine.h"
#include "win_exit.h"

static const uint16_t port = 43333;
using namespace boost::asio;
Expand Down
1 change: 1 addition & 0 deletions samples/sample6_mutex.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
************************************************/
#include <mutex>
#include "coroutine.h"
#include "win_exit.h"

static int value = 0;

Expand Down
1 change: 1 addition & 0 deletions samples/sample7_timer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
************************************************/
#include <chrono>
#include "coroutine.h"
#include "win_exit.h"

int main()
{
Expand Down
2 changes: 2 additions & 0 deletions samples/sample8_multithread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <iostream>
#include <boost/thread.hpp>
#include "coroutine.h"
#include "win_exit.h"
using namespace std;
using namespace std::chrono;

Expand All @@ -29,6 +30,7 @@ int main()
cout << "for-loop, cost ";
cout << duration_cast<milliseconds>(end - start).count() << "ms" << endl;

// 使用libgo做并行计算
start = system_clock::now();
for (int i = 0; i < 100; ++i)
go foo;
Expand Down
1 change: 1 addition & 0 deletions samples/sample9_curl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
#include <boost/thread.hpp>
#include <curl/curl.h>
#include "coroutine.h"
#include "win_exit.h"

static std::atomic<int> g_ok{0}, g_error{0};

Expand Down
11 changes: 11 additions & 0 deletions samples/win_exit.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#pragma once

#ifdef _WIN32
#include <stdlib.h>
struct exit_pause {
~exit_pause()
{
system("pause");
}
} g_exit;
#endif
5 changes: 4 additions & 1 deletion src/main/libgo_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,10 @@

extern "C" int __coroutine_main_function(int argc, char **argv);

__attribute__((weak)) int main(int argc, char **argv)
#ifndef _WIN32
__attribute__((weak))
#endif
int main(int argc, char **argv)
{
co_chan<int> c(1);

Expand Down

0 comments on commit 09ef4df

Please sign in to comment.