可以使用哪些技术来加速C++编译时间?
这个问题出现在Stack Overflow问题C++编程风格的一些评论中,我很想知道它有什么想法.
我见过一个相关的问题,为什么C++编译需要这么长时间?,但这并没有提供很多解决方案.
无论使用哪种构建工具,都能以某种方式实现并行构建吗?
在Unix下我们可以添加make -jN N是线程数,在Windows下我添加到CXX_FLAG "/MP" 哪个然后在Visual Studio中用于并行构建......?CMAKE_MAKE_PROGRAM当我运行CMake时,如何使我的版本不会总是扩展?
什么是一般解决方案?
我想出了这个:
# Add some multithreaded build support
MARK_AS_ADVANCED(MULTITHREADED_BUILD)
set(MULTITHREADED_BUILD 12 CACHE STRING "How many threads are used to build the project")
if(MULTITHREADED_BUILD)
if(${CMAKE_GENERATOR} MATCHES "Unix Makefiles")
message(STATUS ${CMAKE_BUILD_TOOL})
set(CMAKE_MAKE_PROGRAM "${CMAKE_MAKE_PROGRAM} -j${MULTITHREADED_BUILD}")
message(STATUS "Added arguments to CMAKE_BUILD_TOOL: ${CMAKE_MAKE_PROGRAM}")
elseif(MSVC)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
message(STATUS "Added parallel build arguments to CMAKE_CXX_FLAGS: ${CMAKE_CXX_FLAGS}")
endif()
endif()
Run Code Online (Sandbox Code Playgroud) 我想从源代码将 opencv 安装到我的 conda 环境中。由于我使用的是 Jetson,因此没有可用于 opencv 的 pip 或 conda 包。
我使用此命令从源安装,
-D BUILD_EXAMPLES=OFF
-D BUILD_opencv_python2=ON
-D BUILD_opencv_python3=ON
-D CMAKE_BUILD_TYPE=RELEASE
-D CMAKE_INSTALL_PREFIX=${PREFIX}
-D CUDA_ARCH_BIN=5.3,6.2,7.2
-D CUDA_ARCH_PTX=
-D CUDA_FAST_MATH=ON
-D CUDNN_VERSION='8.0'
-D EIGEN_INCLUDE_PATH=/usr/include/eigen3
-D ENABLE_NEON=ON
-D OPENCV_DNN_CUDA=ON
-D OPENCV_ENABLE_NONFREE=ON
-D OPENCV_EXTRA_MODULES_PATH=/tmp/build_opencv/opencv_contrib/modules
-D OPENCV_GENERATE_PKGCONFIG=ON
-D WITH_CUBLAS=ON
-D WITH_CUDA=ON
-D WITH_CUDNN=ON
-D WITH_GSTREAMER=ON
-D WITH_LIBV4L=ON
-D WITH_OPENGL=ON"
Run Code Online (Sandbox Code Playgroud)
如何将 python 依赖项安装到我的 conda 环境而不是将其安装到usr/local/python?
请遵循以下命令:
首先我这样做:
cmake -G Ninja ..
Run Code Online (Sandbox Code Playgroud)
然后:
cmake --build . -j10
Run Code Online (Sandbox Code Playgroud)
或者:
ninja -j10
Run Code Online (Sandbox Code Playgroud)
它们之间有什么区别?它们之间有优点还是缺点吗?
这个相关问题展示了如何使用指定数量的核心构建 CMake 项目。例如,如果我想使用 10 个核心,我可以像这样调用 CMake:
cmake --build . -j 10
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何使用所有可用的核心进行构建。我实际上希望 CMake 自动检测我的核心数量并使用所有这些。