小编usr*_*567的帖子

快速分区方法的稳定性

下面的Quicksort分区算法是否会产生稳定的排序(即它是否保持元素的相对位置具有相等的值):

  partition(A,p,r)
  {
     x=A[r];
     i=p-1;
     for j=p to r-1
       if(A[j]<=x)
          i++;
          exchange(A[i],A[j])

       exchang(A[i+1],A[r]); 
     return i+1;
   }
Run Code Online (Sandbox Code Playgroud)

algorithm quicksort

20
推荐指数
5
解决办法
3万
查看次数

显示CMake变量

假设我有一个名为Foo的包.如果我在包含的CMakeLists.txt文件上运行CMake find_package(Foo),那么我可以打印出变量的值,例如${Foo_LIBRARIES}${Foo_INCLUDES}.

是否有一种简单的方法来显示这些变量而无需在CMakeLists.txt文件上运行CMake,而无需手动检查config.cmake文件?

cmake

20
推荐指数
4
解决办法
4万
查看次数

将SDL2与CMake一起使用

我正在尝试使用CLion来创建一个SDL2项目.问题是使用#include时无法找到SDL标头.

我的CMakeLists.txt文件:

cmake_minimum_required(VERSION 2.8.4)
project(ChickenShooter)

set(SDL2_INCLUDE_DIR C:/SDL/SDL2-2.0.3/include)
set(SDL2_LIBRARY C:/SDL/SDL2-2.0.3/lib/x64)

include_directories(${SDL2_INCLUDE_DIR})
set(SOURCE_FILES main.cpp)

add_executable(ChickenShooter ${SOURCE_FILES})
target_link_libraries(ChickenShooter ${SDL2_LIBRARY})
Run Code Online (Sandbox Code Playgroud)

我的测试main.cpp:

#include <iostream>
#include "SDL.h" /* This one can't be found */

int main(){
    if (SDL_Init(SDL_INIT_VIDEO) != 0){
        std::cout << "SDL_Init Error: " << SDL_GetError() << std::endl;
        return 1;
    }
    SDL_Quit();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

谢谢你能给我的任何帮助.

编辑:我正在使用Windows,而CLion配置为使用cygwin64.

c++ cmake sdl-2

18
推荐指数
5
解决办法
3万
查看次数

CMAKE_PROJECT_NAME和PROJECT_NAME之间的区别?

CMAKE_PROJECT_NAME和PROJECT_NAME有什么区别?

从文档:

CMAKE_PROJECT_NAME

当前项目的名称.

它从最接近的继承的project()命令指定当前项目的名称.

项目名

项目命令的项目名称.

这是最近的project()命令的名称.

我不明白其中的区别.

我应该什么时候使用CMAKE_PROJECT_NAME?我应该什么时候使用PROJECT_NAME

cmake

17
推荐指数
2
解决办法
5608
查看次数

使用Windows 10破解的IntelliJ Idea终端

我安装了Windows 10,终端在IntelliJ IDEA中不起作用.我可以打开一个新的终端,但我不能写.

在此输入图像描述

intellij-idea windows-10

16
推荐指数
1
解决办法
4901
查看次数

CMAKE_BUILD_TYPE =发布是否意味着-DNDEBUG?

是否CMAKE_BUILD_TYPE=Release隐含意味-DNDEBUG

如果不是:期望发生这种暗示是不合理的?

我想知道我的CMakeLists.txt中的后续CMake代码是否多余:

if (NOT CMAKE_BUILD_TYPE MATCHES Debug)
    add_definitions(-DNDEBUG)
endif()
Run Code Online (Sandbox Code Playgroud)

c assert cmake

16
推荐指数
1
解决办法
7745
查看次数

使用SCons更改Linux中的默认C编译器

在我的Linux平台上,我有几个版本的gcc.

根据usr/bin我的要求:

  • gcc34
  • gcc44
  • gcc

以下是一些输出:

$ gcc --version
gcc (GCC) 4.1.2 20080704 (Red Hat 4.1.2-48)

$ gcc44 --version
gcc44 (GCC) 4.4.0 20090514 (Red Hat 4.4.0-6)
Run Code Online (Sandbox Code Playgroud)

我需要使用4.4版本,gcc但默认似乎是4.1 版本.

我有什么办法可以代替/usr/bin/gcc,并gcc44默认的编译器不使用符号链接/usr/bin/gcc44

我不能使用符号链接的原因是因为我的代码必须使用RPM包mock.mock从头开始创建一个最小的linux安装,并在编译我的代码之前安装指定的依赖项.我无法自定义这个"最小安装".

理想的情况下,完美的解决办法是安装官方的RPM包替换gccgcc44作为默认的编译器.有这样的包裹吗?这甚至可能/好吗?

附加信息

我必须使用SCons(make替代),它不允许我指定用于的二进制文件gcc.

我也会接受任何答案,告诉我如何gcc在我的SConstruct文件中指定二进制文件.

c gcc scons

15
推荐指数
2
解决办法
2万
查看次数

调试 CMake find_library

是否可以find_library从 CMake调试?

我想要的是经过考虑的路径列表。我的用例是一个像

find_library (FOO_LIBRARY
              NAMES foo foo.so.0)
Run Code Online (Sandbox Code Playgroud)

并有/lib64/libfoo.so.0我的系统上。但是 CMake 没有找到它。我检查了FIND_LIBRARY_USE_LIB64_PATHS设置为TRUE.

cmake

15
推荐指数
1
解决办法
4722
查看次数

CMake变量名称区分大小写?

CMake如何处理变量名称?他们是否区分大小写?

如果我用FindFoo.cmake

find_package(Foo)
Run Code Online (Sandbox Code Playgroud)

我可以使用FOO_FOUND,Foo_FOUNDfoo_FOUND

cmake case-sensitive

14
推荐指数
2
解决办法
5444
查看次数

Android NDK,CMake与其他库

所以我想在Android Studio上使用Android NDK构建并测试一个CMake.我可以让我的库进行编译,但它似乎不想拉动任何第三方依赖.我一直在阅读工具链并寻找更好的文档,没有运气.有人能告诉我,如果我失踪了吗?

cmake_minimum_required(VERSION 3.4.1)

set(SFML_PATH ${ANDROID_NDK}/sources/sfml)
set(SFML_LIB_PATH ${SFML_PATH}/lib/${ANDROID_NDK_ABI_NAME})

set(SFML_LIB_SYSTEM ${SFML_LIB_PATH}/libsfml-system.so)
set(SFML_LIB_AUDIO ${SFML_LIB_PATH}/libsfml-audio.so)
set(SFML_LIB_GRAPHICS ${SFML_LIB_PATH}/libsfml-graphics.so)
set(SFML_LIB_NETWORK ${SFML_LIB_PATH}/libsfml-network.so)
set(SFML_LIB_WINDOW ${SFML_LIB_PATH}/libsfml-window.so)
set(SFML_LIB_ACTIVITY ${SFML_LIB_PATH}/libsfml-activity.so)
set(SFML_LIB_MAIN ${SFML_LIB_PATH}/libsfml-main.a)


set(SFML_LIBS ${SFML_LIB_SYSTEM} ${SFML_LIB_GRAPHICS} ${SFML_LIB_AUDIO} ${SFML_LIB_WINDOW} ${SFML_LIB_ACTIVITY})

include_directories(${SFML_PATH}/include)
link_directories(${SFML_LIB_PATH})

add_library(native-lib SHARED
    src/main/cpp/native-lib.cpp)

target_link_libraries(native-lib log ${SFML_LIBS})

#file(COPY ${SFML_LIBS} DESTINATION ${__android_install_path})
FOREACH(SFML_LIB ${SFML_LIB})
    execute_process( COMMAND "${CMAKE_COMMAND}" -E copy_if_different "${SFML_LIB}" "${LIBRARY_OUTPUT_PATH}/${SFML_LIB}" RESULT_VARIABLE __fileCopyProcess )
    MESSAGE("Lib: ${SFML_LIB}")
ENDFOREACH(SFML_LIB)
Run Code Online (Sandbox Code Playgroud)

以上是我的CMakeLists.txt.我已经做了一些小的黑客攻击,用SFML和路径进行编译,因为我还没有找到关于CMake和Android的好文档.

cmake android-ndk

14
推荐指数
2
解决办法
1万
查看次数