小编Irb*_*bis的帖子

git - 远程添加origin vs remote set-url origin

我创建了一个新的存储库:

git init
echo "# MESSAGE" >> README.md
git add README.md
git commit -m "first commit"
Run Code Online (Sandbox Code Playgroud)

然后我想将我的提交推送到在github上创建的空远程存储库,所以我必须设置远程.

使用以下命令有什么区别?:

git remote add origin git@github.com:User/UserRepo.git
git remote set-url origin git@github.com:User/UserRepo.git
Run Code Online (Sandbox Code Playgroud)

最后我执行推送:

git push -u origin master
Run Code Online (Sandbox Code Playgroud)

EDIT1:

当我在git init之后调用remote set-url origin时会发生什么?远程set-url origin是否创建了origin?如果在git init之后已经存在origin,那么在我的场景中使用这些命令没有区别,对吧?

git github

345
推荐指数
10
解决办法
43万
查看次数

QtCreator CMake项目 - 如何显示所有项目文件

我使用QtCreator打开CMake项目.除了CMakeLists.txt之外的一些目录仅包含头文件*.h,对于那些目录,项目树视图中的QtCreator仅显示CMakeLists.txt.如何解决?我需要查看来自QtCreator的所有项目文件.

c c++ cmake qt-creator

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

试图理解"指向成员的指针"

我试图理解"指向成员的指针"是如何工作的,但对我来说并非一切都清楚.

这是一个示例类:

class T
{
public:
    int a;
    int b[10]; 
    void fun(){}
};
Run Code Online (Sandbox Code Playgroud)

以下代码说明问题并包含问题:

void fun(){};

void main()
{
   T obj;                
   int local;
   int arr[10];
   int arrArr[10][10];

   int *p = &local;   // "standard" pointer
   int T::*p = &T::a; // "pointer to member" + "T::" , that is clear

   void (*pF)() = fun;        //here also everything is clear
   void (T::*pF)() = T::fun;  
   //or
   void (T::*pF)() = &T::fun;  

   int *pA = arr; // ok
   int T::*pA = T::b; // error

   int (T::*pA)[10] …
Run Code Online (Sandbox Code Playgroud)

c++

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

gcc - 如何使用地址清理器

我在 linux 上使用 gcc 4.8.5。我想使用地址消毒剂,但它不返回有关该程序的任何信息。标志:

SET(CMAKE_CXX_FLAGS "-Wall -Wno-error -g -std=c++11 -fno-omit-frame-pointer -fsanitize=address")
SET(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fno-omit-frame-pointer -fsanitize=address")
Run Code Online (Sandbox Code Playgroud)

链接库:

target_link_libraries(testcpp asan)
Run Code Online (Sandbox Code Playgroud)

有内存泄漏的测试程序:

int main()
{
    int *prt = new int;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

怎么了 ?

c++ linux gcc memory-leaks

7
推荐指数
1
解决办法
7946
查看次数

find_package 在 CONFIG 模式下如何工作

我在 CONFIG 模式下使用 find_package 来查找 Qt5:

find_package(Qt5 CONFIG REQUIRED COMPONENTS Core)
Run Code Online (Sandbox Code Playgroud)

我没有指定 CMAKE_PREFIX_PATH 并且/home/user/Qt/5.5/gcc_64/bin没有在 PATH 中设置,但是 cmake 找到了 *Config.cmake 文件:

/home/user/Qt/5.5/gcc_64/lib/cmake/Qt5/Qt5Config.cmake
/home/user/Qt/5.5/gcc_64/lib/cmake/Qt5Core/Qt5CoreConfig.cmake
Run Code Online (Sandbox Code Playgroud)

它是如何工作的 ?cmake 如何创建搜索路径?

编辑1

我阅读了一份文档,但我不清楚:

<prefix>/(lib/<arch>|lib|share)/cmake/<name>*/          (U)
<prefix>/(lib/<arch>|lib|share)/<name>*/                (U)
<prefix>/(lib/<arch>|lib|share)/<name>*/(cmake|CMake)/  (U)
Run Code Online (Sandbox Code Playgroud)

前缀是什么?上述模式如何与 Qt 路径匹配?:

/home/user/Qt/5.5/gcc_64/lib/cmake/Qt5/Qt5Config.cmake
Run Code Online (Sandbox Code Playgroud)

我为我的图书馆创建了一个类似的路径:

/home/user/Mylib/1.0/gcc_64/lib/cmake/Mylib1/Mylib1Config.cmake
Run Code Online (Sandbox Code Playgroud)

find_package(Mylib1 CONFIG)返回错误:

CMake Warning at CMakeLists.txt:14 (find_package):
Could not find a package configuration file provided by "Mylib1" with any
of the following names:

Mylib1Config.cmake
mylib1-config.cmake

Add the installation prefix of "Mylib1" to CMAKE_PREFIX_PATH or set
"Mylib1_DIR" to …
Run Code Online (Sandbox Code Playgroud)

cmake

6
推荐指数
1
解决办法
2696
查看次数

freeglut错误LNK1104

在我的项目中,我想使用来自非官方opengl sdk的freeglut库。

我使用Premake为vs2010生成了构建文件。然后,我构建了所有库(调试)。在我的项目中,我为freeglut设置了其他包含目录,其他库目录。在其他依赖项中,我添加了freeglutD.lib。

在代码中,我只包含一个freeglut标头。当我想运行程序时,出现错误:

>LINK : fatal error LNK1104: cannot open file 'freeglut.lib'. 
Run Code Online (Sandbox Code Playgroud)

freeglutD.lib是中的唯一文件sdk/freeglut/lib。在SDK中没有freeglut.dllfreeglut.lib

早些时候,我从链接中使用了freeglut 2.8.0 MSVC软件包,该链接是动态链接的(包含freeglut.dll),并且一切正常。

怎么了 ?

linker freeglut

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

Qt 5 中的类声明和命名空间

之间有什么区别:

namespace Ui
{
     class T;
}
class T
{
     //some content
}; 
Run Code Online (Sandbox Code Playgroud)

namespace Ui
{
     class T 
     {
          //some content
     };
}
Run Code Online (Sandbox Code Playgroud)

我使用 Qt Creator,并且在为 Qt Gui 应用程序生成的默认代码中使用了第一个构造。在示例项目中,我有两个类:class MyDialog : public QDialogclass MainWindow : public QMainWindow它们中的每一个都在私有部分包含一个指向该类的指针:

class T: public Q
{
private:
          Ui::T *pointer;
}
Run Code Online (Sandbox Code Playgroud)

这种建设的目的是什么?当 MainWindow 类还包含指向 MyDialog 类的指针时,该指针不能包含Ui::限定符:

private:
          Ui::MainWindow *ui;
          MyDialog *mDialog;
Run Code Online (Sandbox Code Playgroud)

为什么 ?

c++ qt

5
推荐指数
1
解决办法
7476
查看次数

C++多线程-内存同步

我有两个由单独线程调用的函数:

void SetPtr(T* ptr_)
{
   ptr = ptr_;
}
void Process()
{
   if(ptr != nullptr)
   {
      ptr->fun(); // fun() can call Process() again
   }
}
Run Code Online (Sandbox Code Playgroud)

我知道在SetPtr有人可以调用之前调用Process,但是因为这些函数是由单独的线程调用的,所以内存可能不会同步,即可能会Process看到初始ptr值或可能尝试读取ptr未完全写入的值。我可以用来std::lock_quard提供同步,但我想看看其他可能性。对于这种情况,还有哪些其他方法可以提供内存同步?

Edit1 当可以随时调用 SetPtr 时如何同步内存(没有互斥)?

Edit2 ptr, SetPtr and Process属于同一个类,ptr初始设置为nullptr

c++ multithreading c++11

5
推荐指数
1
解决办法
1055
查看次数

GLFW - UBuntu 14.04 LTS上的链接器错误

我想从这个站点编译一个示例代码(在底部).我下载了GLFW 3.0.4源代码,并将其构建在自定义位置.我使用默认设置,GLFW构建为静态库.我的CMakeLists.txt看起来像这样:

cmake_minimum_required(VERSION 2.8)
project(glfw_test_project)

SET(CMAKE_CXX_FLAGS "-Wall -Werror -g -std=c++11")

find_package(OpenGL REQUIRED)

include_directories(/home/user/MyLibs/OpenGL/glfw-3.0.4/include)
link_directories(/home/user/MyLibs/OpenGL/glfw-3.0.4/build/src)

add_executable(glfw_test main.cpp)

target_link_libraries(glfw_test ${OPENGL_gl_LIBRARY})
target_link_libraries(glfw_test glfw3)
Run Code Online (Sandbox Code Playgroud)

当我运行make时,我得到以下信息:

Linking CXX executable glfw_test
/usr/bin/ld: /home/user/MyLibs/OpenGL/glfw-3.0.4/build/src/libglfw3.a(x11_clipboard.c.o): undefined reference to symbol 'XConvertSelection'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [glfw_test] Error 1
make[1]: *** [CMakeFiles/glfw_test.dir/all] Error 2
make: *** [all] Error 2
Run Code Online (Sandbox Code Playgroud)

怎么了 ?

Edit1 当我将GLFW构建为动态库时,一切正常.然后我的CMakeLists.txt中的最后一行必须替换为:

target_link_libraries(glfw_test glfw)
Run Code Online (Sandbox Code Playgroud)

使用静态库时出了什么问题?

opengl ubuntu linker cmake glfw

4
推荐指数
1
解决办法
9368
查看次数

glm :: lookAt返回带有nan元素的矩阵

我想为垂直地看着地面的相机创建一个视图矩阵:

glm::mat4 matrix = glm::lookAt(glm::vec3(0.0f, 1.0f, 0.0f), glm::vec3(0.0f, 0.0f, 0.0f), glm::vec3(0.0f, 1.0f, 0.0f));
Run Code Online (Sandbox Code Playgroud)

最后一个参数是全局向上向量,所以一切似乎都是正确的,但我得到了跟随matirx:

-nan    -nan    -0  0   
-nan    -nan     1  0   
-nan    -nan    -0  0   
 nan     nan    -1  1
Run Code Online (Sandbox Code Playgroud)

我想我得到了nan,因为看向量与向量平行,但是如何使用glm :: lookAt函数构建正确的视图矩阵.

opengl 3d glm-math

4
推荐指数
2
解决办法
1549
查看次数

标签 统计

c++ ×5

cmake ×3

linker ×2

opengl ×2

3d ×1

c ×1

c++11 ×1

freeglut ×1

gcc ×1

git ×1

github ×1

glfw ×1

glm-math ×1

linux ×1

memory-leaks ×1

multithreading ×1

qt ×1

qt-creator ×1

ubuntu ×1