<!-- HTML header for doxygen 1.8.13--><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/><meta http-equiv="X-UA-Compatible" content="IE=9"/><meta name="generator" content="Doxygen 1.8.14"/><meta name="viewport" content="width=device-width, initial-scale=1"/><title>Cpp-Taskflow</title><link href="tabs.css" rel="stylesheet" type="text/css"/><link rel="icon" type="image/x-icon" href="favicon.ico" /><script type="text/javascript" src="jquery.js"></script><script type="text/javascript" src="dynsections.js"></script><link href="navtree.css" rel="stylesheet" type="text/css"/><script type="text/javascript" src="resize.js"></script><script type="text/javascript" src="navtreedata.js"></script><script type="text/javascript" src="navtree.js"></script><script type="text/javascript">/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */$(document).ready(initResizable);/* @license-end */</script><link href="search/search.css" rel="stylesheet" type="text/css"/><script type="text/javascript" src="search/searchdata.js"></script><script type="text/javascript" src="search/search.js"></script><link href="doxygen.css" rel="stylesheet" type="text/css" /></head><body><div id="top"><!-- do not remove this div, it is closed by doxygen! --><div id="titlearea"><table cellspacing="0" cellpadding="0"><tbody><tr style="height: 56px;"><td id="projectalign" style="padding-left: 0.5em;"><div id="projectname"><a href="https://github.com/cpp-taskflow/cpp-taskflow">Cpp-Taskflow</a> <span id="projectnumber">2.4-master-branch</span></div></td></tr></tbody></table></div><!-- end header part --><!-- Generated by Doxygen 1.8.14 --><script type="text/javascript">/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */var searchBox = new SearchBox("searchBox", "search",false,'Search');/* @license-end */</script><script type="text/javascript" src="menudata.js"></script><script type="text/javascript" src="menu.js"></script><script type="text/javascript">/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */$(function() {initMenu('',true,false,'search.php','Search');$(document).ready(function() { init_search(); });});/* @license-end */</script><div id="main-nav"></div></div><!-- top --><div id="side-nav" class="ui-resizable side-nav-resizable"><div id="nav-tree"><div id="nav-tree-contents"><div id="nav-sync" class="sync"></div></div></div><div id="splitbar" style="-moz-user-select:none;"class="ui-resizable-handle"></div></div><script type="text/javascript">/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */$(document).ready(function(){initNavTree('install.html','');});/* @license-end */</script><div id="doc-content"><!-- window showing the filter options --><div id="MSearchSelectWindow"onmouseover="return searchBox.OnSearchSelectShow()"onmouseout="return searchBox.OnSearchSelectHide()"onkeydown="return searchBox.OnSearchSelectKey(event)"></div><!-- iframe showing the search results (closed by default) --><div id="MSearchResultsWindow"><iframe src="javascript:void(0)" frameborder="0"name="MSearchResults" id="MSearchResults"></iframe></div><div class="header"><div class="headertitle"><div class="title">Building and Installing </div> </div></div><!--header--><div class="contents"><div class="textblock"><p>This page describes how to set up Cpp-Taskflow in your project. We will also go through the building process of unit tests and examples.</p><h1><a class="anchor" id="BAISettingUpCpp-Taskflow"></a>Setting Up Cpp-Taskflow</h1><p>Cpp-Taskflow is <em>header-only</em> and there is no need for installation. Simply download the source and copy the headers under the directory <code>taskflow/</code> to your project.</p><div class="fragment"><div class="line">~$ git clone https://github.com/cpp-taskflow/cpp-taskflow.git</div><div class="line">~$ cd cpp-taskflow/</div><div class="line">~$ cp -r taskflow myproject/include/</div></div><!-- fragment --><h1><a class="anchor" id="BAICompileAndLinkFlag"></a>Compile and Link Flags</h1><p>Cpp-Taskflow is written in C++14 and is built on top of C++ standardized threading libraries to improve portability. To compile a Cpp-Taskflow program, say <code>simple.cpp</code>, you need to tell the compiler where to find the Cpp-Taskflow header files and link it through the system thread library (usually <a href="http://man7.org/linux/man-pages/man7/pthreads.7.html">POSIX threads</a> in Linux-like systems). Take gcc for an example:</p><div class="fragment"><div class="line">~$ g++ simple.cpp -I myproject/include/ -O2 -pthread -o simple</div></div><!-- fragment --><h1><a class="anchor" id="BAISupportedCompilers"></a>Supported Compilers</h1><p>To use Cpp-Taskflow, you only need a compiler that supports C++14:</p><ul><li>GNU C++ Compiler at least v5.0 with -std=c++14 </li><li>Clang C++ Compiler at least v4.0 with -std=c++14 </li><li>Microsoft Visual Studio at least v15.7 (MSVC++ 19.14) </li><li>AppleClang Xode Version at least v8 </li><li>Nvidia CUDA Toolkit and Compiler (nvcc) at least v10.0 with -std=c++14</li></ul><p>Cpp-Taskflow works on Linux, Windows, and Mac OS X.</p><h1><a class="anchor" id="BAIBuildExamplesTestsAndBenchmarks"></a>Build Examples, Tests, and Benchmarks</h1><p>Cpp-Taskflow uses CMake to build examples and unit tests. We recommend using out-of-source build.</p><div class="fragment"><div class="line">~$ cd path/to/cpp-taskflow</div><div class="line">~$ mkdir build</div><div class="line">~$ cd build</div><div class="line">~$ cmake ../</div><div class="line">~$ make # compile all examples and unittests</div><div class="line">~$ make test</div><div class="line"></div><div class="line">Running tests...</div><div class="line">/usr/bin/ctest --force-new-ctest-process</div><div class="line">Test project /home/tsung-wei/Code/cpp-taskflow/build</div><div class="line"> Start 1: passive_vector</div><div class="line"> 1/254 Test #1: passive_vector ................... Passed 0.04 sec</div><div class="line"> Start 2: function_traits</div><div class="line"> 2/254 Test #2: function_traits .................. Passed 0.00 sec</div><div class="line"> Start 3: object_pool.sequential</div><div class="line"> 3/254 Test #3: object_pool.sequential ........... Passed 0.10 sec</div><div class="line">...</div><div class="line"> Start 253: cuda_kmeans.1000.8C8G</div><div class="line">253/254 Test #253: cuda_kmeans.1000.8C8G ............ Passed 0.19 sec</div><div class="line"> Start 254: cuda_kmeans.1000.16C16G</div><div class="line">254/254 Test #254: cuda_kmeans.1000.16C16G .......... Passed 0.24 sec</div><div class="line"></div><div class="line">100% tests passed, 0 tests failed out of 254</div><div class="line"></div><div class="line">Total Test time (real) = 29.67 sec</div></div><!-- fragment --><p>When the building completes, you can find the executables for examples and tests under the two folders, <code>examples/</code> and <code>unittests/</code>. By default, our CMake script automatically detects the existence of a CUDA compiler and compiles all GPU tests and examples if one is available. You may list a set of available options in the cmake.</p><div class="fragment"><div class="line">~$ cmake -LA</div><div class="line">...</div><div class="line">TF_BUILD_BENCHMARKS:BOOL=OFF # by default, we don't compile benchmarks due to long compilation time</div></div><!-- fragment --><p>We have developed a set of micro-benchmarks comparing Cpp-Taskflow with OpenMP Task Dependency Clause and Intel TBB FlowGraph. To build these benchmarks, you need to configure the option <code>TF_BUILD_BENCHMARKS</code> to <code>ON</code>.</p><div class="fragment"><div class="line">~$ cmake ../ -DTF_BUILD_BENCHMARKS=ON</div><div class="line">~$ make </div></div><!-- fragment --><p>You can find the binary of each benchmark under the folder <code>benchmarks/</code>. </p></div></div><!-- contents --></div><!-- doc-content --><!-- start footer part --><div id="nav-path" class="navpath"><!-- id is needed for treeview function! --><ul><li class="footer">Generated by<a href="http://www.doxygen.org/index.html"><img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.14 </li></ul></div></body></html>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。